📜  Hibernate Generator类

📅  最后修改于: 2021-01-02 13:35:57             🧑  作者: Mango

Hibernate中的生成器类

类是id的子元素。它用于为持久性类的对象生成唯一标识符。 Hibernate Framework中定义了许多生成器类。

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

  • 已分配
  • 增量
  • 顺序
  • 你好
  • 本机
  • 身份
  • seqhilo
  • uid
  • 吉德
  • 选择
  • 国外
  • 序列同一性

1)分配

如果没有元素,则它是默认的生成器策略。在这种情况下,应用程序分配ID。例如:

....
 
  
    
     
    
          
    .....
          
  
 

2)增量

仅当没有其他进程向该表中插入数据时,它才会生成唯一ID。它生成shortintlong类型的标识符。如果一个表包含一个标识符,则应用程序将考虑其最大值,否则应用程序将认为第一个生成的标识符为1。对于每个属性值,休眠模式将标识符增加1。语法:

....
 
  
    
     
    
          
    .....
          
  
 

3)顺序

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

   .....
    
     
    
    .....
 

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

   .....
    
     
         your_sequence_name
     
    
    .....
 

4)你好

它使用上下限算法生成short,int和long类型的id。句法:

   .....
    
     
    
    .....
 

5)本地的

根据数据库供应商的不同,它使用标识,序列或hilo。句法:

   .....
    
     
    
    .....
 

6)身份

在Sybase,My SQL,MS SQL Server,DB2和HypersonicSQL中使用它来支持id列。返回的ID类型为short,int或long。数据库负责生成唯一标识符。

7)seqhilo

它对指定的序列名称使用高低算法。返回的ID类型为short,int或long。

8)uuid

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

9)GUID

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

10)选择

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

11)外国

它使用另一个关联对象的ID,通常与协会。

12)序列同一性

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