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:这里有个问题就是刷新表的时候速度太慢了.还不如自己手动去创建.如果表太多倒是可以采取批量生成的策略. 在 ...
随机推荐
- mormot数据库连接+查询+序列为JSON
mormot数据库连接+查询+序列为JSON uses SynDB,SynCommons, SynDBRemote, SynOleDB, SynDBMidasVCL, mORMotMidasVCL p ...
- js判断上传文件的大小、类型、修改日期等信息
1.找到上传文件的前端代码,下断点,进行调试,使用jquery获得上传文件对象 2.鼠标放到文件对象fielEl上,弹出文件对象具体内容,可以看大文件对象的:上次修改时间.名字.大小.类型等信息 3. ...
- 数据实时分析平台 Heron
Twitter发布了新开发的数据实时分析平台Heron,以下为官方文档摘译: 我们每天在Twitter上处理着数十亿的事件.正如你猜测的那样,实时分析这些事件是一个巨大的挑战.目前,我们主要的分析平台 ...
- min-height IE6的解决方案
selector { min-height:500px; height:auto !important; height:500px; } 因为IE6中当内容大于容器高度或宽度时,就会撑破容器.并且在同 ...
- mvn test 中文乱码
有两种解决办法: 1.设置encoding:<argLine>-Dfile.encoding=UTF-8</argLine>,解决读取文件中的中文乱码问题 2.升级maven- ...
- [Functional Programming Monad] Map And Evaluate State With A Stateful Monad
We explore our first stateful transaction, by devising a means to echo our state value into the resu ...
- 云计算之路-阿里云上:禁用Windows虚拟内存引发的重启
昨天(2013年8月6日)下午,承载www.cnblogs.com主站的两台云服务器分别自动重启了1次,由于这两台云服务器使用了负载均衡(SLB),重启并未影响网站的正常访问. 与这次重启相关的Win ...
- javascript - 全局与局部作用域
// 全局作用域 var globalNumber = 1; // 挂载在window上的变量或函数 -> 全局作用域 function InternalScope() { // 局部作用域 / ...
- NSDate 问题
类型 比特数 有效数字 数值范围 float 32 6-7 -3.4*10(-38)-3.4*10(38) double 64 15-16 -1.7*10(-308)-1.7*10(308) long ...
- iOS 物流信息时间轴
代码地址如下:http://www.demodashi.com/demo/11958.html timelineLogistics 是模仿淘宝物流信息时间轴界面的自定义View 准备工作 引入Maso ...