Hibernate中的生成器类

< generator> 类是id的子元素。它用于为持久性类的对象生成唯一标识符。 Hibernate Framework中定义了许多生成器类。
所有生成器类都实现org.hibernate.id.IdentifierGenerator接口。应用程序程序员可以通过实现IdentifierGenerator接口来创建自己的生成器类。 Hibernate框架提供了许多内置的生成器类:

  1. 已分配
  2. 增量
  3. 顺序
  4. 螺纹
  5. 本机
  6. 身份
  7. 当然
  8. uid
  9. 吉德
  10. 选择
  11. 国外
  12. 序列同一性
1)分配
如果没有< generator> 元素, 则它是默认的生成器策略。在这种情况下, 应用程序会分配ID。例如:
.... < hibernate-mapping> < class ...> < id ...> < generator class="assigned"> < /generator> < /id> .....< /class> < /hibernate-mapping>

2)增量
仅当没有其他进程向该表中插入数据时, 它才会生成唯一ID。它生成short, int或long类型标识符。如果一个表包含一个标识符, 则应用程序将考虑其最大值, 否则应用程序将考虑第一个生成的标识符为1。对于每个属性值, Hibernate模式将标识符增加1。语法:
.... < hibernate-mapping> < class ...> < id ...> < generator class="increment"> < /generator> < /id> .....< /class> < /hibernate-mapping>

3)顺序
它使用数据库的顺序。如果没有定义序列, 它将自动创建一个序列, 例如对于Oracle数据库, 它将创建一个名为HIBERNATE_SEQUENCE的序列。对于Oracle, DB2, SAP DB, Postgre SQL或McKoi, 它使用序列, 但在内部数据库中使用生成器。句法:
..... < id ...> < generator class="sequence"> < /generator> < /id> .....

要定义自己的序列, 请使用generator的param子元素。
..... < id ...> < generator class="sequence"> < param name="sequence"> your_sequence_name< /param> < /generator> < /id> .....

4)线程
它使用高低算法来生成short, int和long类型的id。句法:
..... < id ...> < generator class="hilo"> < /generator> < /id> .....

5)本地的
根据数据库供应商的不同, 它使用标识, 序列或hilo。句法:
..... < id ...> < generator class="native"> < /generator> < /id> .....

6)身份
在Sybase, My SQL, MS SQL Server, DB2和HypersonicSQL中使用它来支持id列。返回的ID类型为short, int或long。数据库负责生成唯一标识符。
7)的后备箱
它对指定的序列名称使用高低算法。返回的ID类型为short, int或long。
8)uuid
【Hibernate中的生成器类】它使用128位UUID算法生成ID。返回的ID为String类型, 在网络中是唯一的(因为使用IP)。 UUID以十六进制数字表示, 长度为32。
9)GUID
它使用由字符串类型的数据库生成的GUID。它适用于MS SQL Server和MySQL。
10)选择
它使用数据库触发器返回的主键。
11)外国
它使用另一个关联对象的ID, 通常与< one-to-one> 关联一起使用。
12)序列同一性
它使用特殊的序列生成策略。仅Oracle 10g驱动程序支持。

    推荐阅读