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。
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框架的主键生成策略的更多相关文章
- hibernate框架(4)---主键生成策略
主键生成策略 常见的生成策略分为六种 1.increment 由Hibernate从数据库中取出主键的最大值(每个session只取1次),以该值为基础,每次增量为1,在内存中生成主键,不依赖于底层的 ...
- Hibernate入门之主键生成策略详解
前言 上一节我们讲解了Hibernate命名策略,从本节我们开始陆续讲解属性.关系等映射,本节我们来讲讲主键的生成策略. 主键生成策略 JPA规范支持4种不同的主键生成策略(AUTO.IDENTITY ...
- 三 Hibernate持久化状态&主键生成策略
持久化类 持久化:将内存中的一个对象持久化到数据库中的过程 持久化类:Java类+映射文件.Java中一个类与数据库的表建立了映射关系,那么这个类称为持久化类. 持久化类的编写规则: 对持久化类提供一 ...
- Hibernate 表映射 主键生成策略与复合主键
主要分析三点: 一.数据表和Java类的映射 : 二.单一主键映射和主键的生成策略 : 三.复合主键的表映射 : 一.数据表和Java类的映射 Hibernate封装了数据库DDL语句,只需要将数据 ...
- Hibernate的ID主键生成策略
ID生成策略(一) 通过XML配置实现ID自己主动生成(測试uuid和native) 之前我们讲了除了通过注解的方式来创建一个持久化bean外.也能够在须要持久化的bean的包路径下创建一个与bean ...
- hibernate annotation 相关主键生成策略
Hibernate 默认的全面支持 13 物种生成策略 : 1. increment 2. identity 3. sequence 4. hilo 5. seqhilo 6. uuid 7. uu ...
- Hibernate -- Session的主键生成策略
*缓存:集合--集合放置到内存中 * 只要session存在 session的一级缓存肯定存在. *当执行查询时,以oid为oid=1条件到session的一级缓存中查找oi ...
- hibernate 注解 主键生成策略
一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue ...
- hibernate的主键生成策略
一共是13种,其中包括native native: 对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就 ...
随机推荐
- LSP5513
LSP5513:宽范围高效的DC-DC(输入:4.5~27V;输出0.925~24V,3A),输出电流达3A
- css与JS知识整理
CSS知识 CSS选择器:基础中的核心,选择器指明了{}中“样式”作用的对象,也就是“样式”作用于网页中的哪些元素. CSS选择器类型:一共三大类. 基础选择器 属性选择器 组合选择器 ...
- Bingding模型
public abstract class Binding : IDefaultCommunicationTimeouts public virtual IChannelListener<TCh ...
- 在每天黄金时刻将数据库中数据获取包装成Excel表
过程: 1.由Timer对象实现安排指定的任务在指定的时间进行重复的固定的延迟操作 a.设定时间间隔24小时:PERIOD_DAY = 24 * 60 * 60 * 100; b.指定每天执行操作的时 ...
- hihoCoder #1151 : 骨牌覆盖问题·二 (矩阵快速幂,DP)
题意:给一个3*n的矩阵,要求用1*2的骨牌来填满,有多少种方案? 思路: 官网题解用的仍然是矩阵快速幂的方式.复杂度O(logn*83). 这样做需要构造一个23*23的矩阵,这个矩阵自乘n-1次, ...
- COGS 2211. [BZOJ3653]谈笑风生
★★★★ 输入文件:laugh.in 输出文件:laugh.out 简单对比时间限制:3 s 内存限制:512 MB [问题描述] 设T 为一棵有根树,我们做如下的定义: • 设a和b ...
- Xcode - 'openssl/opensslconf.h' file not found解决
点击Build Settings搜索Header Search Paths,添加$(SRCROOT)/目录/Alipay
- 【GIMP学习】抠图方法二则
之前抠图都比较二,懒人我尝试过在线抠图软件.以及在线PS简易版,真的都很不好用,前者简单粗暴,后者我遇到各种储存不能的bug. 在ubuntu的环境下有一个功能可以和PS相媲美的功能强大图片处理软件G ...
- idea报错:The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configu
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- idea 发布和本地测试问题
1.maven本地打包成jar 提示[错误: 找不到或无法加载主类]修改 配置maven ---->Runner---->VM Optins [-DarchetypeCatalog=loc ...