`
I_conquer
  • 浏览: 25647 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

(转)Hibernate的generator属性的定义

 
阅读更多

 

Hibernate的Generator属性有7种class,本文简略描述了这7种class的意义和用法。

1、identity:用于MySql数据库。特点:递增

  1. < id name="id" column="id">
  2.     < generator class="identity"/>
  3. < /id>

注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。

2、sequence:用于Oracle数据库

  1. < id name="id" column="id">
  2.    < generator class="sequence">
  3.      < param name="sequence">序列名< /param>
  4.    < /generator>
  5. < /id>

3、native:跨数据库时使用,由底层方言产生。 
Default.sequence为hibernate_sequence

  1. < id name="id" column="id">
  2.    < generator class="native"/>
  3. < /id>

注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。 
如果Oracle中没有该序列,连Oracle数据库时会报错。

4、hilo:通过高低位合成id,先建表hi_value,再建列next_value。必须要有初始值。

  1. < id name="id" column="id">
  2.     < generator class="hilo">
  3.       < param name="table">high_val< /param>
  4.        < param name="column">nextval< /param>
  5.       < param name="max_lo">5< /param>
  6.     < /generator>
  7. < /id>  

5、sequencehilo:同过高低位合成id,建一个sequence序列,不用建表。

  1. < id name="id" column="id">
  2. < generator class="hilo">
  3. < param name="sequence">high_val_seq< /param>
  4. < param name="max_lo">5< /param>
  5. < /generator>
  6. < /id>

6、assigned:用户自定义id;

  1. < id name="id" column="id">
  2. < generator class="assigned"/>
  3. < /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>联合一起使用。

分享到:
评论

相关推荐

    hibernate_code_generator.rar

    3. .hbm映射文件:.hbm文件是Hibernate的对象关系映射文件,它定义了Java对象与数据库表之间的映射关系。通过代码生成器,你可以快速地为每个数据库表创建对应的.hbm文件,无需手动编写XML。 4. Java实体类:工具会...

    hibernate中的generator的生成方式hibernate中的generator的生成方式

    在Hibernate中,`Generator`是负责生成主键值的策略,通常在`&lt;id&gt;`元素中通过`class`属性指定。不同的数据库和不同的应用场景可能需要不同的生成策略。接下来,我们将逐一介绍各种常见的生成策略及其适用场景。 ###...

    hibernate属性级别注解实例代码

    Hibernate属性级别注解是Hibernate ORM框架中用于在Java对象(实体类)的属性上定义数据库映射的关键元素。这些注解使得开发人员能够无需XML配置文件就能声明对象与数据库之间的映射关系,从而简化了开发过程。以下...

    hibernate学习笔记定义.pdf

    在提供的“hibernate学习笔记定义.pdf”中,我们可以看到许多关于Hibernate的核心知识点。 首先,文档中提到了Domain对象的映射配置。Hibernate使用XML文件来配置持久化类(Domain类)和数据库表之间的映射关系。这...

    hibernate-mapping参数详解

    1. `default-access`:这个参数定义了Hibernate如何访问对象的属性。默认值是`property`,意味着Hibernate将使用getter和setter方法来读写属性。如果自定义了访问策略,可以通过实现`PropertyAccessor`接口来指定。 ...

    hibernate的dtd 包含hibernate.properties

    总结一下,`hibernate.properties`是Hibernate框架的配置中心,`hibernate-configuration-3.0.dtd`规定了配置文件的结构,而`hibernate-mapping-3.0.dtd`则定义了对象-关系映射文件的格式。理解这些知识点对于高效地...

    Hibernate较完整资料

    - `dialect` 属性定义了方言,这里是 `org.hibernate.dialect.SQLServerDialect`,用于处理 SQL Server 特有的语法。 - `show_sql` 设置为 `true`,会在控制台打印出执行的 SQL 语句,便于调试。 - `mapping` ...

    hibernate学习笔记文档

    - 在实体类设计时,通过关联属性定义一对多或多对多的关系。 - 在 XML 映射文件中使用 `&lt;one-to-many&gt;` 或 `&lt;many-to-many&gt;` 标签来配置这些关系。 - **查询操作**: - 使用 HQL(Hibernate Query Language)或 ...

    hibernate教程

    - `&lt;id&gt;`标签映射主键,`name`属性指定Java类中的主键属性,`&lt;generator&gt;`定义主键生成方式,如自增、序列等。 - `&lt;property&gt;`标签映射普通属性,`name`对应类属性,`column`对应数据库表的列。 6. **使用...

    hibernate配置文件详解

    * `property`:定义类的属性信息 * `set`:定义一对多关联关系 这些配置项是 Hibernate 建立对象关系映射所需的基本信息。 Hibernate 配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。通过 hibernate...

    Hibernate学习.pdf

    - **4.3.3.1 Hibernate配置属性**: 如show_sql用于控制是否显示执行的SQL语句。 - **4.3.3.2 Hibernate JDBC和连接(connection)属性**: 包括连接池大小等。 - **4.3.3.3 Hibernate缓存属性**: 控制缓存行为。 - ...

    Hibernate学习笔记特别详细

    006---Hibernate基本映射标签和属性介绍 - &lt;hibernate-mapping&gt;:定义映射文档的根元素。 - &lt;class&gt;:定义一个Java类到数据库表的映射。 - &lt;id&gt;:标识一个实体的唯一标识,对应数据库表的主键。 - &lt;property&gt;:映射...

    hibernate 重点知识原创

    `.hbm.xml` 文件是 Hibernate 的对象-关系映射文件,它定义了实体类和数据库表之间的详细映射规则,包括字段类型、长度、主键生成策略等。例如: ```xml &lt;hibernate-mapping package="com.example"&gt; ...

    Hibernate笔记 马士兵

    &lt;generator&gt;元素(主键生成策略) 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 资料hibernate 资料hibernate 资料

    - **定义与作用:** Hibernate是一种对象关系映射(ORM)技术的实现,其主要目的是简化Java应用程序与数据库之间的交互过程。通过使用Hibernate,开发人员能够更加专注于业务逻辑的开发,而无需过多关注底层数据库...

    hibernate-annotations-3.4.0.GA

    Hibernate Annotations是Hibernate 3.x系列引入的新特性,它允许开发者在Java实体类上直接使用注解来定义对象关系映射信息,替代了传统的Hibernate XML配置文件。这种注解方式提高了开发效率,减少了配置文件的维护...

    Hibernate主键生成方式

    开发者可以定义一个序列名称,Hibernate会通过这个序列来生成主键。这种方式确保了主键的顺序性和唯一性,但不适用于所有数据库,比如MySQL就不支持。 5. **Native方式**:`&lt;generator class="native"/&gt;` 这是...

Global site tag (gtag.js) - Google Analytics