一 Hibernate生成器类

  Hibernate中,标签id中的generator标签用于生成持久化类对象的唯一标识。所有的生成器类都实现了org.hibernate.id.IdentifierGenerator接口。 可以通过实现IdentifierGenerator接口来创建自己的生成器类。

1.assigned

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

  1. ....
  2. <hibernate-mapping>
  3. <class ...>
  4. <id ...>
  5. <generator class="assigned"></generator>
  6. </id>
  7.  
  8. .....
  9.  
  10. </class>
  11. </hibernate-mapping>

2.increment

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

  1. ....
  2. <hibernate-mapping>
  3. <class ...>
  4. <id ...>
  5. <generator class="increment"></generator>
  6. </id>
  7.  
  8. .....
  9.  
  10. </class>
  11. </hibernate-mapping>

3.sequence

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

  1. .....
  2. <id ...>
  3. <generator class="sequence"></generator>
  4. </id>
  5. .....

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

  1. .....
  2. <id ...>
  3. <generator class="sequence">
  4. <param name="sequence">your_sequence_name</param>
  5. </generator>
  6. </id>
  7. .....

4.hilo

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

  1. .....
  2. <id ...>
  3. <generator class="hilo"></generator>
  4. </id>
  5. .....

5.native

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

  1. .....
  2. <id ...>
  3. <generator class="native"></generator>
  4. </id>
  5. .....

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. Hibernate入门(三)

    持久化类的编写规则: 1.持久化类需要提供无参的构造方法.因为在Hibernate的底层需要使用反射生成的实例. 2.持久化类的属性需要私有,对私有的属性提供共有的get和set方法.因为在Hiber ...

  2. 简单的Hibernate入门简介

    其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西, ...

  3. hibernate入门之person表

    下面的hibernate入门person表指的是:根据mysql数据库中的test表和其中的元素-->建立映射表==>进而创建持久化类的顺序来操作了,下面为步骤 1.配置MySQL驱动程序 ...

  4. 史上最简单的Hibernate入门简单介绍

    事实上Hibernate本身是个独立的框架,它不须要不论什么web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了非常多非Hibernate ...

  5. Hibernate(一)之Hibernate入门

    一.Hibernate入门 ssh框架体系结构 1.1.ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational ...

  6. Hibernate入门这一篇就够了

    前言 本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么是Hibernate框架? Hibernate是一种ORM框架,全 ...

  7. 走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

    原文地址:Hibernate入门这一篇就够了 前言 本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么是Hibernate ...

  8. 三大框架之hibernate入门

    hibernate入门   1.orm      hibernate是一个经典的开源的orm[数据访问中间件]框架           ORM( Object Relation Mapping)对象关 ...

  9. Hibernate的三种状态及对象生命周期

        理解Hibernate的三种状态,更利于理解Hibernate的运行机制,这些可以让你在开发中对疑点问题的定位产生关键性的帮助. 三种状态 临时状态(Transient):在通过new关键字, ...

  10. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

随机推荐

  1. [ext4]空间管理 - 查找块

     在文件系统中,当需要执行写操作时,肯定是需要查找需要写入的块.那么如何查找块哪? 在Ext4系统中,有两个函数是可能执行查找操作的:ext4_getblk().ext4_get_block(). ...

  2. java线程(三)

    线程代码同步与线程锁 为什么要有同步代码块? 线程同步的出现是为了解决多个线程对统一资源操作而引发的数据混乱问题.这里引用一个经典demo-银行转账操作,场景如下,小明的账户目前有1000人民币,他在 ...

  3. 1019 Least Common Multiple

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  4. Reactjs vs. Vuejs

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 纪俊,从事Web前端开发工作,2016年加入腾讯OMG广告平台产品部,喜欢研究前端技术框架. 这里要讨论的话题 ...

  5. H5 canvas圆形的时钟

    今天用H5中的canvas标签做一个时钟,H5中有很多好用的新增标签,真的很不错. 1.canvas标签介绍 <canvas> 标签定义图形,比如图表和其他图像,你必须使用脚本来绘制图形. ...

  6. 阿里react整合库dva demo分析

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p. ...

  7. hdu3652 B-number 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652 题意就是求区间内能被13整除并且包含”13“的数字的个数 感觉是比较中等的数位DP题目 我用的记 ...

  8. AlertDialog中的EditText不能输入

    一.描述 在项目中有碰到使用AlertDialog,给他设置自定义布局,自定义布局中有包含EditText,但是运行起来后发现EditText不能输入文字,没有焦点,一开始还以为是事件拦截掉了,后来试 ...

  9. python 列表、元组、字符串、字典、集合、return等梳理

    有必要对这些数据类型及操作做下梳理: 1.列表:增删改查 a.查找: >>> names=["zhang","wang","li&q ...

  10. js中toggle()及toggleClass()的使用详解

    在javascript中toggle()为连续点击事件,当里面含有多个function(){}函数时,每次点击依次执行里面的function的函数,直至最后一个.随后每次点击都重复对这几个函数的轮番调 ...