Hibernate生成器类
在Hibernate中,id元素的<generator>子元素用于生成持久化类的对象的唯一标识符。 Hibernate框架中定义了许多生成器类。
所有的生成器类都实现了org.hibernate.id.IdentifierGenerator接口。 应用程序员可以通过实现IdentifierGenerator接口来创建自己的生成器类。 Hibernate框架提供了许多内置的生成器类:
- assigned
- increment
- sequence
- hilo
- native
- identity
- seqhilo
- uuid
- guid
- select
- foreign
- sequence-identity
1. assigned
如果没有使用<generator>元素,assigned是默认的生成器策略。在这种情况下,应用程序为对象分配ID。 例如:
....
<hibernate-mapping>
<class ...>
<id ...>
<generator class="assigned"></generator>
</id>
.....
</class>
</hibernate-mapping>
2. increment
当没有其他进程将数据插入此表时,才会生成唯一的ID。 它生成short,int或long型标识符。 第一个生成的标识符通常为1,然后每次递增为1。语法:
....
<hibernate-mapping>
<class ...>
<id ...>
<generator class="increment"></generator>
</id>
.....
</class>
</hibernate-mapping>
3. sequence
它使用数据库的顺序序列。如果没有定义序列,它会自动创建一个序列。 在Oracle数据库的情况下,它将创建一个名为HIBERNATE_SEQUENCE的序列。 在Oracle,DB2,SAP DB,Postgre SQL或McKoi的情况下,它使用序列(sequence),但在interbase中使用生成器。
语法:
.....
<id ...>
<generator class="sequence"></generator>
</id>
.....
要定义自己的序列,请使用generator的 param 子元素。
.....
<id ...>
<generator class="sequence">
<param name="sequence">your_sequence_name</param>
</generator>
</id>
.....
4. hilo
它使用高低算法来生成short,int和long类型的id。 语法:
.....
<id ...>
<generator class="hilo"></generator>
</id>
.....
5. native
它使用标识,序列或希洛取决于数据库供应商。 语法:
.....
<id ...>
<generator class="native"></generator>
</id>
.....
6. identity
它用于Sybase,Mysql,MS SQL Server,DB2和Hypersonic SQL以支持id列。 返回的ID类型为short,int或long。
7. seqhilo
它在指定的序列名称上使用高低算法。 返回的ID类型为short,int或long。
8. uuid
它使用128位UUID算法生成id。 返回的ID是String类型,在网络中是唯一的(因为使用了IP)。 UUID以十六进制数字表示,长度为32。
9. guid
它使用由字符串类型的数据库生成的GUID。 它适用于MS SQL Server和MySQL。
10. select
它使用数据库触发器返回主键。
11. foreign
它使用另一个关联对象的id,主要用于<一对一>关联。
12. sequence-identity
它使用特殊的序列生成策略。 仅在Oracle 10g驱动程序中支持。
Hibernate生成器类的更多相关文章
- spring+hibernate实体类注解详解(非原创) + cascade属性取值
@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...
- (转) Hibernate持久化类与主键生成策略
http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...
- eclipse从数据库逆向生成Hibernate实体类
做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...
- 06.Hibernate实体类生命周期
前言:Session接口是Hibernate向应用程序提供的操作数据库的主要接口,它提供了基本的增删查改方法,而且Session具有一个缓存它是Hibernate的一级缓存.站在持久化层的角度 ...
- [转]eclipse借助hibernate tool从数据库逆向生成Hibernate实体类
如何从数据库逆向生成Hibernate实体类呢??? 1. 首先,要在eclipse中采用自带的数据库管理器(Data Management),连通你的数据库: 然后选择数据库,这里用的oracle, ...
- Intellij idea生成Hibernate实体类
反向生成基于注解的Hibernate实体类 1. 为项目添加Hibernate支持 2. 在IDE右边找到database,然后按照步骤添加数据. 3. 保存后.在主面板左侧有persistence, ...
- Eclipse从数据库逆向生成Hibernate实体类和映射文件(Eclipse插件系列之HibernateTools)
♣下载安装Eclipse插件(HibernateTools) ♣Eclipse连接数据库(Mysql5.7) ♣新建hibernate.properties和hibernate.cfg.xml文件 ♣ ...
- Hibernate.基础篇《一》.Hibernate工具类.
Hibernate.基础篇<一>.Hibernate工具类. 话述: Hibernate.基础篇第一篇,前面是代码.后面再加理论&实践. Hibernate使用的版本是:5.x,在 ...
- (转) Eclipse通过HibernateTools实现逆向生成Hibernate实体类
背景:工作中使用Hibernate进行持久化的开发工作,所以有必要详细了解这方面的知识. ps:这里有个问题就是刷新表的时候速度太慢了.还不如自己手动去创建.如果表太多倒是可以采取批量生成的策略. 在 ...
随机推荐
- Instant Run 的操作影响到了代码,导致Android App启动闪退的问题
转自yuhc163原文android启动应用java.lang.NoClassDefFoundError: Class not found using the boot class loader; n ...
- Unity3D之高级渲染-Shader Forge增强版
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家.特邀编辑.畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...
- Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
在本篇中将介绍Dockerfile的编写 除了通过修改Image,创建Container,在打包成Image来创建我们需要的Image之外 我们还可以编写Dockerfile文件,通过build来创建 ...
- Spark下载与入门(Spark自学二)
2.1 下载Spark 略 2.2 Spark中Python和Scala的shell Spark shell可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由Spark自 ...
- LeakCanary 的使用遇到的弯路
基本上来源是: http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/ 1. demon 中自带的android_v7兼容包有问题的,建议自己使 ...
- 乌云主站所有漏洞综合分析&乌云主站漏洞统计
作者:RedFree 最近的工作需要将乌云历史上比较有含金量的漏洞分析出来,顺便对其它的数据进行了下分析:统计往往能说明问题及分析事物的发展规律,所以就有了此文.(漏洞数据抓取自乌云主站,漏洞编号从1 ...
- Django——模版Template报错
>>> from django.template import Template >>> t = Template("My name is {{ my_n ...
- java web--百度百科
Java Web,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet,不过使用得很少,Java在服务器端 ...
- Oracle 数字操作。数字函数。mod(),trunc(),round(),ceil(),floor的使用
1,取整函数(ceil 向上取整,floor 向下取整) 第一种方式: ) from dual -- 取整 trunc (1.9) = 1 第二种方式 select ceil(66.6) N1,flo ...
- XAOP的使用示范例子
代码地址如下:http://www.demodashi.com/demo/12976.html XAOP 一个简易的AOP(Android)应用框架.囊括了最实用的AOP应用. 特点 支持快速点击切片 ...