Hibernate 专题
专题目录
您的位置:java > Hibernate 专题 > Hibernate生成器类
Hibernate生成器类
作者:--    发布时间:2019-11-20

在hibernate中,id元素的<generator>子元素用于生成持久化类的对象的唯一标识符。 hibernate框架中定义了许多生成器类。

所有的生成器类都实现了org.hibernate.id.identifiergenerator接口。 应用程序员可以通过实现identifiergenerator接口来创建自己的生成器类。 hibernate框架提供了许多内置的生成器类:

  1. assigned
  2. increment
  3. sequence
  4. hilo
  5. native
  6. identity
  7. seqhilo
  8. uuid
  9. guid
  10. select
  11. foreign
  12. sequence-identity

1. assigned

如果没有使用<generator>元素,assigned是默认的生成器策略。在这种情况下,应用程序为对象分配id。 例如:

....  
 <hibernate-mapping>  
  <class ...>  
    <id ...>  
     <generator class="assigned"></generator>  
    </id>  

    .....  

  </class>  
 </hibernate-mapping>

2. increment

当没有其他进程将数据插入此表时,才会生成唯一的id。 它生成shortintlong型标识符。 第一个生成的标识符通常为1,然后每次递增为1。语法:

....  
 <hibernate-mapping>  
  <class ...>  
    <id ...>  
     <generator class="increment"></generator>  
    </id>  

    .....  

  </class>  
 </hibernate-mapping>

3. sequence

它使用数据库的顺序序列。如果没有定义序列,它会自动创建一个序列。 在oracle数据库的情况下,它将创建一个名为hibernate_sequence的序列。 在oracle,db2,sap db,postgre sql或mckoi的情况下,它使用序列(sequence),但在interbase中使用生成器。
语法:

.....  
 <id ...>  
  <generator class="sequence"></generator>  
 </id>  
 .....

要定义自己的序列,请使用generatorparam 子元素。

.....  
 <id ...>  
  <generator class="sequence">  
      <param name="sequence">your_sequence_name</param>  
  </generator>  
 </id>  
 .....

4. hilo

它使用高低算法来生成shortintlong类型的id语法

.....  
 <id ...>  
  <generator class="hilo"></generator>  
 </id>  
 .....

5. native

它使用标识,序列或希洛取决于数据库供应商。 语法

.....  
 <id ...>  
  <generator class="native"></generator>  
 </id>  
 .....

6. identity

它用于sybase,mysql,ms sql server,db2和hypersonic sql以支持id列。 返回的id类型为shortintlong

7. seqhilo

它在指定的序列名称上使用高低算法。 返回的id类型为shortintlong

8. uuid

它使用128uuid算法生成id。 返回的idstring类型,在网络中是唯一的(因为使用了ip)。 uuid以十六进制数字表示,长度为32

9. guid

它使用由字符串类型的数据库生成的guid。 它适用于ms sql server和mysql。

10. select

它使用数据库触发器返回主键。

11. foreign

它使用另一个关联对象的id,主要用于<一对一>关联。

12. sequence-identity

它使用特殊的序列生成策略。 仅在oracle 10g驱动程序中支持。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册