hibernate 主键生成策略

1:uuid.hex: 采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库 。在*.hbm.XML中按如下设置。

<id name="id" unsaved-value="null">
<generator class="uuid.hex"/>
</id>

2:指定参数的情况
<id name="id" unsaved-value="0">
<generator class="sequence">
<param name="sequence">SEQ_CHILD</param>
</generator>
</id>

3:以下是Tracylau 所写,网址如下:http://forum.javaeye.com/allbloglist.php?page=5
所有的<generator>的Class都是从net.sf.Hibernate.id.IdentifierGenerator接口实现得到的,Class属性表示该generator是由哪种方式来生成的。生成方式包括:

increment:生成long, short或者int类型的主键,不能在cluster环境下使用。适用于所有数据库
identity:生成long, short或者int类型的主键。适用于DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL
sequence :生成long, short或者int类型的主键。适用于DB2, PostgreSQL, Oracle, SAP DB, McKoi,Interbase.
hilo:生成long, short或者int类型的主键。需要提供一个数据库的表来存放生成的主键信息。当采用应用服务器的JTA提供的数据库连接或者用户自定义的数据库连接的时候,不要使用这种主键生成方式。适用于所有数据库
seqhilo:采用给定的数据库的sequence来生成long, short或者int类型的主键。适用于DB2, PostgreSQL, Oracle, SAP DB, McKoi,Interbase.

uuid.hex采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库
uuid.string:同样采用128位的UUID算法。将生成的字符编码位16位。适用于除PostgreSQL.以外的数据库
native:根据具体连接的数据库从identity, sequence或者hilo选择一种来生成主键。适用的数据库根据选择的生成方式确定。
assigned: 交给应用自己给主键赋值。要注意的是赋值必须在调用save()方法之前完成。适用的数据库根据选择的生成方式确定。

 

 

 

 

1.注意:实体类映射表字段时不要使用oralce关键字,否则不能映射成功。
2.步骤:
    (1)往oralce里建一个sequence:
        

Sql代码 复制代码  收藏代码
  1. create sequence seq_id_supervision   
  2.     minvalue 1   
  3.     start with 1   
  4.     increment by 1   


         注:如果多个表要映射自增长主键,每个表要建一个sequence。
    (2)model映射配置:
        

Xml代码 复制代码  收藏代码
  1.         <id name="id">  
  2.        <generator class="sequence">  
  3.        <param name="sequence">  
  4.          seq_id_letter   
  5.     </param>  
  6. </generator>  
  7. </id>  
  8.          


    (3)Hibernate映射文件配置:
        

Xml代码 复制代码  收藏代码
  1.          <hibernate-configuration>  
  2. <session-factory>  
  3.     <property name="hibernate.connection.driver_class">  
  4.         oracle.jdbc.driver.OracleDriver   
  5.     </property>  
  6.     <property name="hibernate.connection.url">  
  7.         jdbc:oracle:thin:@localhost:1521:jf   
  8.     </property>  
  9.     <property name="hibernate.connection.username">jf</property>  
  10.     <property name="hibernate.connection.password">jf</property>  
  11.     <property name="hibernate.dialect">  
  12.              org.hibernate.dialect.OracleDialect   
  13.         </property>  
  14.     <property name="hibernate.show_sql">true</property>  
  15.     <property name="hibernate.hbm2ddl.auto">update</property>  
  16.     <property name="hibernate.cache.provider_class">  
  17.         org.hibernate.cache.HashtableCacheProvider   
  18.     </property>  
  19.     <mapping resource="com/chinasoft/jfb/model/LetterInformation.hbm.xml" />  
  20. </session-factory>  
  21. </hibernate-configuration>  

你可能感兴趣的:(oracle,Hibernate,数据库,Class,PostgreSQL,generator)