-
为休眠生成主键有几种策略:1) assigned2)。
hilo3)
seqhilo4)
increment5)
identity6)
sequence7)
native8)
一般来说,利用主键生成方式将提供最佳的性能和数据库平台适应性。 也由于常用的数据库,如oracle、db2、sqlserver、mysql
以此类推,所有这些都提供了易于使用的主键生成机制(自动增加字段或序列)。 我们可以在数据库提供的主键生成机制中使用 generator-class=native 来生成主键。 但值得注意的是,某些数据库提供的主键生成机制可能不是最有效的,大量的并发插入数据可能会导致表之间的互锁。
数据库提供的主键生成机制通常是将当前主键状态保存在内部表中(例如,对于自动递增的主键,当前的最大值和增量都保留在这个内部表中),然后每次插入数据时,都会读取最大值,然后将增量添加为新记录的主键, 然后,将新的最大值更新回内部表,以便插入操作可能会导致数据库中的多个表读/写操作。同时,伴随着数据的解锁操作,对性能影响很大。因此,建议用于对并发刀片要求较高的系统。
作为主密钥生成机制。
-
主密钥生成策略:
increment:主键,适用于所有数据库,由 Hibernate 维护并自递增,与底层数据库无关,但不适用于两个或多个 Hibernate 进程。
标识:主键,适用于支持自动递增的DBMS,如MySQL或MS SQL Server,主键值不由Hibernate维护。
序列:主键适用于 Oracle 和其他支持序列的 DBMS,主键值不是由 Hibernate 维护的,由序列生成。
native:根据底层数据库的具体特征选择主键生成策略,如果是MySQL或SqlServer,选择Identity,如果是Oracle,选择Sequence。
hilo:主键,Hibernate 使用特定表的字段作为 hign 值来生成主键值。
**主键,Hibernate 使用 UUID 128 位算法生成基于字符串的主键值。
assign:适合应用程序维护的自然主键。