在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。

2、increment

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

3.、sequencce

  它使用数据库的顺序序列。如果没有定义序列,它会自动创建一个序列。在Oracle数据库的情况下,它将创建一个名为HIBERNATE_SEQUENCE的序列。在DB2、SAP DB、Postgre SQL 或McKoi的情况下,它使用序列(sequence),但在interbase中使用生成器。使用sequence类型时,<generator>元素中药使用<param>子元素指定序列名称。

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

4.hilo

它使用高低算法来生成short,int和long类型的id。

5、native

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

6、indentity

  它用于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驱动程序中支持。

备注:hilo和seqhilo生成策略的高低算法即hi/lo算法。hi:高值------从数据库取得的那个值;lo:低值------hibernate自动维护,取值1到max_low;max_low:映射文件中配置的那个值。

  

Hibernate框架的主键生成策略的更多相关文章

  1. hibernate框架(4)---主键生成策略

    主键生成策略 常见的生成策略分为六种 1.increment 由Hibernate从数据库中取出主键的最大值(每个session只取1次),以该值为基础,每次增量为1,在内存中生成主键,不依赖于底层的 ...

  2. Hibernate入门之主键生成策略详解

    前言 上一节我们讲解了Hibernate命名策略,从本节我们开始陆续讲解属性.关系等映射,本节我们来讲讲主键的生成策略. 主键生成策略 JPA规范支持4种不同的主键生成策略(AUTO.IDENTITY ...

  3. 三 Hibernate持久化状态&主键生成策略

    持久化类 持久化:将内存中的一个对象持久化到数据库中的过程 持久化类:Java类+映射文件.Java中一个类与数据库的表建立了映射关系,那么这个类称为持久化类. 持久化类的编写规则: 对持久化类提供一 ...

  4. Hibernate 表映射 主键生成策略与复合主键

    主要分析三点: 一.数据表和Java类的映射 : 二.单一主键映射和主键的生成策略 : 三.复合主键的表映射 : 一.数据表和Java类的映射  Hibernate封装了数据库DDL语句,只需要将数据 ...

  5. Hibernate的ID主键生成策略

    ID生成策略(一) 通过XML配置实现ID自己主动生成(測试uuid和native) 之前我们讲了除了通过注解的方式来创建一个持久化bean外.也能够在须要持久化的bean的包路径下创建一个与bean ...

  6. hibernate annotation 相关主键生成策略

    Hibernate 默认的全面支持 13 物种生成策略 : 1. increment 2.  identity 3. sequence 4. hilo 5. seqhilo 6. uuid 7. uu ...

  7. Hibernate -- Session的主键生成策略

    *缓存:集合--集合放置到内存中       *  只要session存在 session的一级缓存肯定存在.       *当执行查询时,以oid为oid=1条件到session的一级缓存中查找oi ...

  8. hibernate 注解 主键生成策略

    一.JPA通用策略生成器       通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue ...

  9. hibernate的主键生成策略

    一共是13种,其中包括native native: 对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就 ...

随机推荐

  1. 安卓Listview 不规则项即不同item的运行

    在安卓中,listview  的item 是一个不断被轮询调换位置的过程,这样 即 图片参考地址   http://www.cnblogs.com/mybkn/archive/2012/05/23/2 ...

  2. Centos7中查看IP命令:IP addr

    Centos的IP地址是网卡的inet 的值,很明显第一个是本地服务地址,不是我们想要的.第二个没有inet这个属性值. 接下来配置网卡,我的网卡是上图黄色方框中第一行开始的那一部分:eno16777 ...

  3. WPF CanExecuteChanged

    继承ICommand ,RelayCommand命令 public class RelayCommand : ICommand { private readonly Action _execute; ...

  4. 获取dbf中的表名

    因为特殊需要,需要获取dbf数据库中的表的名称.现有 如下解决办法 public List<string> GetTableFields(string path) { List<st ...

  5. 【持续更新】HTML5 基础知识

    文档类型声明 <!DOCTYPE html> 必不可少,位于文件第一行. 字符编码 <meta charset="UTF-8"> 语义化标记元素 heade ...

  6. H5网站加载速度优化总结

    1. 在代码文件结构 尽量优化的同时,能力再强已经到极限了,但你服务器辣鸡,搭配不当,你代码优化上天 也是徒劳啊. 2.你不怎么优化, 服务器 各种技术配置到位的话, now你也看到了,我一个系统首页 ...

  7. java错误笔记

    错误1. Description       Resource Path Location   Type The superclass "javax.servlet.http.HttpSer ...

  8. Incredibuild导入key的方式

    作者:朱金灿 来源:http://blog.csdn.net/clever101 Incredibuild5.0采用新的授权机制,在安装完服务端之后右键单击它的授权文件License .ib_lic, ...

  9. ASP.NET MVC执行流程图

  10. vijos 1164 曹冲养猪

    描述 自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把.举个例子,假如有16 ...