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 中一些重要的预定义生成器类是:
- 分配
- 外国的
- 希洛
- 身份
- 增量
- 本国的
- 顺序
- uuid
1. 指定生成器
分配的生成器是默认生成器。默认情况下,hibernate 将assigned视为生成器, assigned是为Assigned 类指定的快捷方式名称。这个类将我们设置的相同id返回给hibernate,然后将具有该id的对象存储在数据库中。
hbm.xml 文件中的语法:
2.国外发电机
foreign是为ForeignGenerator类指定的快捷方式名称。 ForeignGenerator仅适用于一对一的关系。它返回父对象的 id 作为子对象的 id。
hbm.xml 文件中的语法:
3.希洛发电机
hilo是TableHiloGenerator类的快捷方式名称。在hbm.xml文件中配置hilo生成器类时,我们传递“table”、“column” 、 和“max_lo”作为参数。
hbm.xml 文件中的语法:
document
column
13210
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返回给休眠状态。
在数据库中创建序列的语法:
create sequence
hbm.xml 文件中的语法:
sequential_datasource
8. uuid 生成器
uuid是为AbstractUUIDGenerator类指定的快捷方式名称。它根据机器的 IP 地址、 JVM 的启动时间、系统时间和JVM 中的计数器值生成一个唯一的字符串Identifier 并返回到休眠状态。
hbm.xml 文件中的语法: