个性化阅读
专注于IT技术分析

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

它使用128位UUID算法生成ID。返回的ID为String类型, 在网络中是唯一的(因为使用IP)。 UUID以十六进制数字表示, 长度为32。


9)GUID

它使用由字符串类型的数据库生成的GUID。它适用于MS SQL Server和MySQL。

10)选择

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

11)外国

它使用另一个关联对象的ID, 通常与<one-to-one>关联一起使用。

12)序列同一性

它使用特殊的序列生成策略。仅Oracle 10g驱动程序支持。
赞(0)
未经允许不得转载:srcmini » Hibernate中的生成器类

评论 抢沙发

评论前必须登录!