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就 ...
随机推荐
- node+express第一次实战踩坑记录
读万卷书不如行万里路,必须实践出真理! 问题1:项目结构该搭建成什么样? 我一个node.js小白,完全没有想法!再见! 找找别人的项目看看别人放的什么项目结构,再结合自己的项目需求我来想想!
- eclipse修改xml配置文件tomcat不能同步问题
之前springmvc-config.cml中的Controller写成了Constroller,导致java.lang.ClassNotFoundException异常,而我更改后,更新的信息并没有 ...
- git与GitHub(二)
昨天在安装完git之后,出了一个问题,虽然暂时有解决的办法,但是由于电脑中了病毒并且配置低下等原因,这个问题的解决办法目前还有待考证.遇到的问题是这样的: 前提是想试一下git在命令行里的命令:于是: ...
- 用java代码写一个简单的网上购物车程序
需求:1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性.2.写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法. 3.写一个购物车类,有添加商品方法.查看订单信息,删除商品,修 ...
- codeforces727C(交互)
题意 $n$个数,初始时不知道他们的值. 每次可以询问两个数的和,在$n$次询问内确定他们的值 $n \leqslant 5000$ Sol 首先询问出$1, 2$,$1, 3$,$2, 3$ 解个方 ...
- JS动态获取项目名以及获取URL地址中的参数
在项目当中我们可能会遇到例如改变的项目名称之后,相对应的地址就需要改变,为了减少工作量,将地址当中的项目名这一块写成动态获取的,那么最关键一点就是我要先获取它,再进行操作: 知识点整理,话不多说,直接 ...
- Random-数组
1.能够使用Random生成随机数 1)import java.util.Random; 2)Random r = new Random(); 3)r.nextIn ...
- winform重绘
1.重绘文字#多行文字a.先定义一个矩形 Rectangle p1 = , , , this.Height); Rectangle p2 = , , , this.Height); Rectangle ...
- LibreOJ #103. 子串查找
题目描述 这是一道模板题. 给定一个字符串 A AA 和一个字符串 B BB,求 B BB 在 A AA 中的出现次数. A AA 中不同位置出现的 B BB 可重叠. 输入格式 输入共两行,分别是字 ...
- html页面编码问题
今天在项目中碰到需要把已经编码的html页面通过mvc controller返回到前端页面,已编码的html页面包含类似下面的内容: <div style="line-height: ...