Hibernate的Generator属性有7种class,本文简略描述了这7种class的意义和用法。
1、identity:用于MySql数据库。特点:递增
- < id name="id" column="id">
- < generator class="identity"/>
- < /id>
注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。
2、sequence:用于Oracle数据库
- < id name="id" column="id">
- < generator class="sequence">
- < param name="sequence">序列名< /param>
- < /generator>
- < /id>
3、native:跨数据库时使用,由底层方言产生。
Default.sequence为hibernate_sequence
- < id name="id" column="id">
- < generator class="native"/>
- < /id>
注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。
如果Oracle中没有该序列,连Oracle数据库时会报错。
4、hilo:通过高低位合成id,先建表hi_value,再建列next_value。必须要有初始值。
- < id name="id" column="id">
- < generator class="hilo">
- < param name="table">high_val< /param>
- < param name="column">nextval< /param>
- < param name="max_lo">5< /param>
- < /generator>
- < /id>
5、sequencehilo:同过高低位合成id,建一个sequence序列,不用建表。
- < id name="id" column="id">
- < generator class="hilo">
- < param name="sequence">high_val_seq< /param>
- < param name="max_lo">5< /param>
- < /generator>
- < /id>
6、assigned:用户自定义id;
- < id name="id" column="id">
- < generator class="assigned"/>
- < /id>
7、foreign:用于一对一关系共享主健时,两id值一样。
本文讲解Hibernate中hbm的generator子元素的一些内置生成器的快捷名字。Generator子元素是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。
在*.hbm.xml必须声明的< generator>子元素是一个Java类的名字,用来为该持久化类的实例生成唯一的标识。
< generator class="sequence"/>
这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然,Hibernate提供了很多内置的实现。下面是Generator子元素的一些内置生成器的快捷名字:
increment(递增)
用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。
identity
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。返回的标识符是long, short 或者int类型的。
sequence (序列)
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。
hilo (高低位)
使用一个高/低位算法来高效的生成long, short或者 int类型的标识符。给定一个表和字段(默认分别是是hibernate_unique_key 和next_hi)作为高位值得来源。高/低位算法生成的标识符只在一个特定的数据库中是唯一的。在使用JTA获得的连接或者用户自行提供的连接中,不要使用这种生成器。
seqhilo(使用序列的高低位)
使用一个高/低位算法来高效的生成long, short或者 int类型的标识符,给定一个数据库序列(sequence)的名字。
uuid.hex
用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中唯一(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。
uuid.string
使用同样的UUID算法。UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能使用在PostgreSQL数据库中
native(本地)
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
assigned(程序设置)
让应用程序在save()之前为对象分配一个标示符。
foreign(外部引用)
使用另外一个相关联的对象的标识符。和< one-to-one>联合一起使用。
相关推荐
3. .hbm映射文件:.hbm文件是Hibernate的对象关系映射文件,它定义了Java对象与数据库表之间的映射关系。通过代码生成器,你可以快速地为每个数据库表创建对应的.hbm文件,无需手动编写XML。 4. Java实体类:工具会...
在Hibernate中,`Generator`是负责生成主键值的策略,通常在`<id>`元素中通过`class`属性指定。不同的数据库和不同的应用场景可能需要不同的生成策略。接下来,我们将逐一介绍各种常见的生成策略及其适用场景。 ###...
Hibernate属性级别注解是Hibernate ORM框架中用于在Java对象(实体类)的属性上定义数据库映射的关键元素。这些注解使得开发人员能够无需XML配置文件就能声明对象与数据库之间的映射关系,从而简化了开发过程。以下...
在提供的“hibernate学习笔记定义.pdf”中,我们可以看到许多关于Hibernate的核心知识点。 首先,文档中提到了Domain对象的映射配置。Hibernate使用XML文件来配置持久化类(Domain类)和数据库表之间的映射关系。这...
1. `default-access`:这个参数定义了Hibernate如何访问对象的属性。默认值是`property`,意味着Hibernate将使用getter和setter方法来读写属性。如果自定义了访问策略,可以通过实现`PropertyAccessor`接口来指定。 ...
总结一下,`hibernate.properties`是Hibernate框架的配置中心,`hibernate-configuration-3.0.dtd`规定了配置文件的结构,而`hibernate-mapping-3.0.dtd`则定义了对象-关系映射文件的格式。理解这些知识点对于高效地...
- `dialect` 属性定义了方言,这里是 `org.hibernate.dialect.SQLServerDialect`,用于处理 SQL Server 特有的语法。 - `show_sql` 设置为 `true`,会在控制台打印出执行的 SQL 语句,便于调试。 - `mapping` ...
- 在实体类设计时,通过关联属性定义一对多或多对多的关系。 - 在 XML 映射文件中使用 `<one-to-many>` 或 `<many-to-many>` 标签来配置这些关系。 - **查询操作**: - 使用 HQL(Hibernate Query Language)或 ...
- `<id>`标签映射主键,`name`属性指定Java类中的主键属性,`<generator>`定义主键生成方式,如自增、序列等。 - `<property>`标签映射普通属性,`name`对应类属性,`column`对应数据库表的列。 6. **使用...
* `property`:定义类的属性信息 * `set`:定义一对多关联关系 这些配置项是 Hibernate 建立对象关系映射所需的基本信息。 Hibernate 配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。通过 hibernate...
- **4.3.3.1 Hibernate配置属性**: 如show_sql用于控制是否显示执行的SQL语句。 - **4.3.3.2 Hibernate JDBC和连接(connection)属性**: 包括连接池大小等。 - **4.3.3.3 Hibernate缓存属性**: 控制缓存行为。 - ...
006---Hibernate基本映射标签和属性介绍 - <hibernate-mapping>:定义映射文档的根元素。 - <class>:定义一个Java类到数据库表的映射。 - <id>:标识一个实体的唯一标识,对应数据库表的主键。 - <property>:映射...
`.hbm.xml` 文件是 Hibernate 的对象-关系映射文件,它定义了实体类和数据库表之间的详细映射规则,包括字段类型、长度、主键生成策略等。例如: ```xml <hibernate-mapping package="com.example"> ...
<generator>元素(主键生成策略) 20 二、 annotateon方式 21 1、AUTO默认 21 2、IDENTITY 22 3、SEQUENCE 22 4、为Oracle指定定义的Sequence 22 5、TABLE - 使用表保存id值 23 三、 联合主键 24 1、xml方式 24 2、...
- **定义与作用:** Hibernate是一种对象关系映射(ORM)技术的实现,其主要目的是简化Java应用程序与数据库之间的交互过程。通过使用Hibernate,开发人员能够更加专注于业务逻辑的开发,而无需过多关注底层数据库...
Hibernate Annotations是Hibernate 3.x系列引入的新特性,它允许开发者在Java实体类上直接使用注解来定义对象关系映射信息,替代了传统的Hibernate XML配置文件。这种注解方式提高了开发效率,减少了配置文件的维护...
开发者可以定义一个序列名称,Hibernate会通过这个序列来生成主键。这种方式确保了主键的顺序性和唯一性,但不适用于所有数据库,比如MySQL就不支持。 5. **Native方式**:`<generator class="native"/>` 这是...