hibernate之主鍵生成策略

首先創建Student和Woker的實體類,在導入兩個實體類的hbm.xmljava

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.two.Student" table="t_hibernate_student">
        <id name="sid" type="java.lang.Integer" column="sid">
            <!--  <generator class="assigned" />人工控制數據類型不限-->
        <!-- <generator class="increment" /> -->    
        <!-- <generator class="identity" />數據庫控制  數據庫沒有列段沒有自增回報錯,數字類型 -->    
<!--             <generator class="increment" /> hibernate控制-->
                          <generator class="increment"     /> 
            <!-- <generator class="sequence" />String類型的ID -->
            <!-- <generator class="sequence" > <param name="sequence_name">aaa</param> 
                </generator> -->
            <!-- <generator class="com.javaxl.two.id.Myts" /> -->
        </id>
        <property name="sname" type="java.lang.String" column="sname">
        </property>
    </class>
</hibernate-mapping>

主鍵策略分爲四種,人工控制,數據庫控制,以及hibernate控制,數據庫

generator中填的實際上是一個類

人工控制:app

數據庫變化:ide

 

而後在是數據庫控制數據ui

 

數據庫控制  數據庫沒有列段沒有自增會報錯,僅限數字類型spa

數據庫:hibernate

跟手動輸入的值沒有任何的關係,只會跟隨數據庫的自增而變化3d

 

自定義主鍵策略:code

package com.two;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentifierGenerator;

public class MyTsGenerator implements IdentifierGenerator {

    @Override
    public Serializable generate(SharedSessionContractImplementor arg0, Object arg1) throws HibernateException {
        // TODO Auto-generated method stub
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        return "book_order_"+sdf.format(new Date());
    }

}

能夠自定義將ID列段改爲自定義內容orm

 

須要將你本身寫的自定義的類的路勁寫入class

 

 

數據庫變化:

 

 

 

自定義uuid:

隨機生成32位的String數值

 

 

 

數據庫變化

 

 這就是hibernate的主鍵策略

相關文章
相關標籤/搜索