跳到主要内容

简述Hibernate 主键生成 策略有哪些 ?

参考答案:

Hibernate是一个开源的Java对象关系映射(ORM)框架,它提供了多种主键生成策略来确保在数据库中为每个对象生成唯一的标识符。以下是Hibernate中常用的主键生成策略:

  1. assigned:由用户自行决定主键的值。在保存对象之前,需要为对象的主键字段设置值。
  2. hilo:基于Hibernate的high-low算法生成主键。它通过组合数据库的高位值和Hibernate的低位值来生成唯一的主键。此策略要求数据库支持自增字段。
  3. increment:自增主键生成策略。它依赖于数据库的自增字段来生成主键。当保存对象时,Hibernate会查询数据库以获取下一个可用的主键值。
  4. identity:依赖于数据库的自增字段来生成主键。此策略与increment类似,但它在插入对象之前不会尝试获取下一个主键值。
  5. sequence:使用数据库序列来生成主键。Hibernate会配置一个数据库序列,并在需要时从该序列中获取下一个值作为主键。
  6. uuid:使用UUID(通用唯一标识符)生成主键。UUID是一种基于时间的唯一标识符,不需要依赖于数据库的自增字段或序列。
  7. uuid.hex:与uuid类似,但生成的UUID将转换为十六进制字符串。
  8. native:根据数据库方言选择最合适的主键生成策略。Hibernate会根据当前配置的数据库类型自动选择适当的生成策略。
  9. selected:用户可以在运行时选择主键生成策略。这种策略允许在运行时动态地选择最适合当前环境的生成策略。
  10. foreign:使用外键作为主键。这通常用于多对一关联中,其中子实体的主键是父实体的外键。

这些策略可以通过在实体类的映射文件或注解中进行配置来选择和使用。根据具体的应用场景和数据库类型,可以选择最适合的主键生成策略。