在Hibernate中,id元素的<generator>子元素用于生成持久化类的对象的唯一标识符。 Hibernate框架中定义了许多生成器类。

所有的生成器类都实现了org.hibernate.id.IdentifierGenerator接口。 应用程序员可以通过实现IdentifierGenerator接口来创建自己的生成器类。 Hibernate框架提供了许多内置的生成器类:

  1. assigned
  2. increment
  3. sequence
  4. hilo
  5. native
  6. identity
  7. seqhilo
  8. uuid
  9. guid
  10. select
  11. foreign
  12. sequence-identity

1. assigned

如果没有使用<generator>元素,assigned是默认的生成器策略。在这种情况下,应用程序为对象分配ID。 例如:

....
<hibernate-mapping>
<class ...>
<id ...>
<generator class="assigned"></generator>
</id> ..... </class>
</hibernate-mapping>
XML

2. increment

当没有其他进程将数据插入此表时,才会生成唯一的ID。 它生成shortintlong型标识符。 第一个生成的标识符通常为1,然后每次递增为1。语法:

....
<hibernate-mapping>
<class ...>
<id ...>
<generator class="increment"></generator>
</id> ..... </class>
</hibernate-mapping>
XML

3. sequence

它使用数据库的顺序序列。如果没有定义序列,它会自动创建一个序列。 在Oracle数据库的情况下,它将创建一个名为HIBERNATE_SEQUENCE的序列。 在Oracle,DB2,SAP DB,Postgre SQL或McKoi的情况下,它使用序列(sequence),但在interbase中使用生成器。
语法:

.....
<id ...>
<generator class="sequence"></generator>
</id>
.....
Java

要定义自己的序列,请使用generator的 param 子元素。

.....
<id ...>
<generator class="sequence">
<param name="sequence">your_sequence_name</param>
</generator>
</id>
.....
XML

4. hilo

它使用高低算法来生成shortintlong类型的id。 语法

.....
<id ...>
<generator class="hilo"></generator>
</id>
.....
Java

5. native

它使用标识,序列或希洛取决于数据库供应商。 语法

.....
<id ...>
<generator class="native"></generator>
</id>
.....
Java

6. identity

它用于Sybase,Mysql,MS SQL Server,DB2和Hypersonic SQL以支持id列。 返回的ID类型为shortintlong

7. seqhilo

它在指定的序列名称上使用高低算法。 返回的ID类型为shortintlong

8. uuid

它使用128UUID算法生成id。 返回的IDString类型,在网络中是唯一的(因为使用了IP)。 UUID以十六进制数字表示,长度为32

9. guid

它使用由字符串类型的数据库生成的GUID。 它适用于MS SQL Server和MySQL。

10. select

它使用数据库触发器返回主键。

11. foreign

它使用另一个关联对象的id,主要用于<一对一>关联。

12. sequence-identity

它使用特殊的序列生成策略。 仅在Oracle 10g驱动程序中支持。

Hibernate生成器类的更多相关文章

  1. spring+hibernate实体类注解详解(非原创) + cascade属性取值

    @Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...

  2. (转) Hibernate持久化类与主键生成策略

    http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...

  3. eclipse从数据库逆向生成Hibernate实体类

    做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...

  4. 06.Hibernate实体类生命周期

        前言:Session接口是Hibernate向应用程序提供的操作数据库的主要接口,它提供了基本的增删查改方法,而且Session具有一个缓存它是Hibernate的一级缓存.站在持久化层的角度 ...

  5. [转]eclipse借助hibernate tool从数据库逆向生成Hibernate实体类

    如何从数据库逆向生成Hibernate实体类呢??? 1. 首先,要在eclipse中采用自带的数据库管理器(Data Management),连通你的数据库: 然后选择数据库,这里用的oracle, ...

  6. Intellij idea生成Hibernate实体类

    反向生成基于注解的Hibernate实体类 1. 为项目添加Hibernate支持 2. 在IDE右边找到database,然后按照步骤添加数据. 3. 保存后.在主面板左侧有persistence, ...

  7. Eclipse从数据库逆向生成Hibernate实体类和映射文件(Eclipse插件系列之HibernateTools)

    ♣下载安装Eclipse插件(HibernateTools) ♣Eclipse连接数据库(Mysql5.7) ♣新建hibernate.properties和hibernate.cfg.xml文件 ♣ ...

  8. Hibernate.基础篇《一》.Hibernate工具类.

    Hibernate.基础篇<一>.Hibernate工具类. 话述: Hibernate.基础篇第一篇,前面是代码.后面再加理论&实践. Hibernate使用的版本是:5.x,在 ...

  9. (转) Eclipse通过HibernateTools实现逆向生成Hibernate实体类

    背景:工作中使用Hibernate进行持久化的开发工作,所以有必要详细了解这方面的知识. ps:这里有个问题就是刷新表的时候速度太慢了.还不如自己手动去创建.如果表太多倒是可以采取批量生成的策略. 在 ...

随机推荐

  1. Telnet协议详解

    转:http://www.cnblogs.com/dazhaxie/archive/2012/06/27/2566054.html 1. 概述 Telnet协议是TCP/IP协议族中的一员,是Inte ...

  2. mormot支持websocket

    mormot支持websocket 根据定义,HTTP连接是无状态的和单向的,也就是说,客户机向服务器发送一个请求,该服务器通过一个应答回复.没有客户端的预先请求,就没有办法让服务器发送消息给客户机. ...

  3. 利用LogParser分析IIS日志

    LogParser是微软官方出品的用于读取分析IIS日志的工具,使用类SQL语句过滤文本日志内容,并可将内容导出到csv.sqlserver作进一步分析    下载地址:http://www.micr ...

  4. 使用Rabbitmq.client反序列化包含Mongo.Bson.ObjectId属性实体类时抛异常

         原因分析:    队列中存储的objectId属性是字符串,反序列化字符串转换成objectid类型时报错     解决方法:    1.定义ObjectIdConverter属性类,反序列 ...

  5. Yii2系列教程:安装及Hello World

    http://www.yiiframework.com/ 安装Yii2 打算从头开始,所以,连安装Yii2也稍微写一点吧.安装Yii2最好的方式就是使用composer: composer globa ...

  6. shareToQQ,qq 4.1.1 for android,闪退

    用shareToQQ函数分享图文消息,在qq 4.1.1 for android版本下打开联系人列表数秒后会闪退!在更高版本的V4.5.2.1,V4.2.1下则没有这个问题(证明各种设置没问题),各位 ...

  7. 阻止 gulp 发生异常后退出

    gulp-plumber 可以阻止 gulp 插件发生错误导致进程退出并输出错误日志.

  8. [转载]linux 更新yum源 改成阿里云源

    原文链接:https://www.cnblogs.com/bincoding/p/7892762.html 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc ...

  9. Django——django1.6 基于类的通用视图

    最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特定的参数集即可,不必关心具体的实现.各种 ...

  10. mui.ajax返回type为abort

    最近在使用h5和mui开发app,发现mui.ajax有一个小bug 情况一: 参数和请求路径无误,但是总是调起失败的回调函数,打印出 type=abort (终止请求) 原因: mui.ajax默认 ...