📜  Hibernate – 生成器类

📅  最后修改于: 2022-05-13 01:55:42.478000             🧑  作者: Mango

Hibernate – 生成器类

Hibernate 是一个开源的、非侵入性的、轻量级的Java ORM(对象关系映射)框架,用于开发独立于数据库软件的持久性逻辑。在JDBC中开发持久性逻辑,我们处理原始类型。而在Hibernate框架中,我们使用对象来开发独立于数据库软件的持久性逻辑。我们可以在所有的Java、JEE中做独立的持久化逻辑。持久性逻辑意味着存储和处理数据以供长期使用。

ORM(对象关系映射)框架简化了数据创建、数据操作和数据访问。它是一种将对象映射到存储在数据库中的数据的编程技术。它在内部使用JDBC API与数据库进行交互。

Hibernate 的显着特点

  • 它是一个开源框架,可供所有人使用。
  • 它可以单独使用,也可以将Hibernate与其他Java技术和框架一起使用。
  • Hibernate类不需要实现Hibernate API接口,也不需要从Hibernate API类扩展。

休眠生成器类

生成器类用于生成对象的ID ,该 ID 将作为主键插入到数据库中。 ID是持久类对象的唯一标识符。我们可以根据我们的要求在我们的应用程序中使用任何生成器类。 Hibernate 提供了一个标签来表示生成器。但是,它是 的子元素。每个预定义的生成器类都有一个快捷方式名称,因此标记必须使用此快捷方式名称进行配置。

所有的hibernate生成器类都实现了hibernate.id.IdentifierGenerator接口,并且重写了generate(SessionImplementor, Object)方法来生成标识符或者主键值。我们可以通过实现IdentifierGenerator接口并重写 generate() 方法来创建自己的生成器类。

生成器类的类型

Hibernate提供了许多预定义的生成器类。 hibernate 中一些重要的预定义生成器类是:

  1. 分配
  2. 外国的
  3. 希洛
  4. 身份
  5. 增量
  6. 本国的
  7. 顺序
  8. uuid

1. 指定生成器

分配的生成器是默认生成器。默认情况下,hibernate 将assigned视为生成器, assigned是为Assigned 类指定的快捷方式名称。这个类将我们设置的相同id返回给hibernate,然后将具有该id的对象存储在数据库中。

hbm.xml 文件中的语法:

2.国外发电机

foreign是为ForeignGenerator类指定的快捷方式名称。 ForeignGenerator仅适用于一对一的关系。它返回父对象的 id 作为子对象的 id。

hbm.xml 文件中的语法:

3.希洛发电机

hiloTableHiloGenerator类的快捷方式名称。在hbm.xml文件中配置hilo生成器类时,我们传递“table”、“column” “max_lo”作为参数。

hbm.xml 文件中的语法:

Hibernate给出的上述三个参数的默认值为:

  • 表 = hibernate_unique_key
  • 列 = next_hi
  • max_lo = 32767

4. 身份生成器

identity是为IdentityGenerator类指定的快捷方式名称。它读取数据库的自动递增列算法并获取该值并将其作为 id 返回到休眠状态。身份生成器支持Sybase、My SQL、MS SQL Server、DB2和 HypersonicSQL等数据库,但不支持Oracle数据库,因为Oracle数据库中没有自动增量功能。因此,身份生成器可以被视为依赖于数据库的生成器。

hbm.xml 文件中的语法:

5.增量生成器

增量是为IncrementGenerator类指定的快捷方式名称。 IncrementGenerator类读取数据库表中现有 ID 的最大值,然后将其递增 1 并将 ID 值返回给休眠。

hbm.xml 文件中的语法:

6.原生生成器

native是为NativeGenerator类指定的快捷方式名称。如果数据库支持身份生成器,那么它将充当身份,否则它将检查其他生成器的数据库支持。它根据底层数据库的功能选择身份、序列hilo

hbm.xml 文件中的语法:

7. 序列发生器

sequence是为SequenceGenerator类提供的快捷方式名称。它读取数据库序列的下一个值,然后将该值作为id返回给休眠状态。

在数据库中创建序列的语法:

hbm.xml 文件中的语法:

8. uuid 生成器

uuid是为AbstractUUIDGenerator类指定的快捷方式名称。它根据机器的 IP 地址、 JVM 的启动时间、系统时间JVM 中的计数器值生成一个唯一的字符串Identifier 并返回到休眠状态。

hbm.xml 文件中的语法: