Hibernate之主键生成规则
一 Hibernate生成器类
Hibernate中,标签id中的generator标签用于生成持久化类对象的唯一标识。所有的生成器类都实现了org.hibernate.id.IdentifierGenerator接口。 可以通过实现IdentifierGenerator接口来创建自己的生成器类。
1.assigned
如果没有使用<generator>元素,assigned是默认的生成器策略,应用程序为对象分配ID。
....
<hibernate-mapping>
<class ...>
<id ...>
<generator class="assigned"></generator>
</id>
.....
</class>
</hibernate-mapping>
2.increment
当没有其他进程将数据插入此表时,才会生成唯一的ID。 它生成short,int或long型标识符。 第一个生成的标识符通常为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> .....
要定义自己的序列,请使用generator的 param 子元素。
.....
<id ...>
<generator class="sequence">
<param name="sequence">your_sequence_name</param>
</generator>
</id>
.....
4.hilo
它使用高低算法来生成short,int和long类型的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类型为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.select
它使用数据库触发器返回主键。
11.foreign
它使用另一个关联对象的id,主要用于<一对一>关联。
12.sequence-identity
它使用特殊的序列生成策略。 仅在Oracle 10g驱动程序中支持。
浙公网安备 33010602011771号