hibernate框架学习之主键生成策略generator
1)手工控制
assigned(不限制类型)
2)数据库自动生成
uuid(字符串类型)
increment(整型数值类型)
identity (整型数值类型)
sequence (整型数值类型)
native(整型数值类型)

assigned策略是由程序员手工控制输入数据模型OID的一种id生成策略
assigned策略不限定数据库中id字段的类型
assigned策略无法保障id的不重复性
assigned策略通常配合外部自定义的id生成策略使用,否则将具有很大的风险性
assigned策略对于集群式数据库id控制相对简单些,也可以理解为“为所欲为”
后期配合一些主键自增工具类(UuidService)完成
在UuidService基础上加入缓存机制有效提升其效率
=======
uuid策略是由以下4种数据联合计算得出的一种OID生成策略
IP地址
JVM启动时间(精确到250ms)
当前系统时间
JVM提供的计数器(保障唯一)
uuid策略要求数据库中id字段为字符串类型
uuid策略可以保障id的唯一性,因此不具有风险性
=========
increment策略是由Hibernate内部控制生成OID的一种id生成策略
increment策略要求数据库中id字段为整型数值类型
increment策略首先从对应数据库表中取出当前已使用的最大id值max,然后在此基础上+1,提供给当前要操作数据,完成主键唯一性增长,可兼容数据库
increment策略虽然可以保障id的唯一性,但是如果多个连接同时对一个表进行操作时,可能获取到相同的max值,导致相同id的出现,因此需要更多的配置,来控制数据库的并发策略
=====
identity策略是由数据库底层控制生成OID的一种id生成策略
identity策略要求数据库中id字段为整型数值类型,并且要求设置成自增特性
identity只能应用于数据库提供主键自增策略的数据库实现,不能全兼容所有数据库,MySQL可用
identity策略由数据库底层实现,即便申请了一个id不使用,也不影响下一个id的获取,因此线程安全
=========
sequence策略是由数据库底层控制生成OID的一种id生成策略
sequence策略要求数据库中id字段为整型数值类型
sequence只能应用于提供序列支持的数据库实现,不能全兼容所有数据库,Oracle可用
sequence策略由数据库底层实现,id生成控制交由数据库管理,是线程安全的策略
============
native策略是一种设计性OID生成策略
native会根据你所使用的数据库类型,在下列各种生成策略中自动选择对应的id生成策略
identity
sequence
hilo
==========
复合主键/联合主键/多主键
复合主键指在一个数据模型使用两个或两个以上的属性来作为唯一性标识用于区分数据
复合主键在目前的开发中极少使用,主要是为了兼容早期的遗留系统
复合主键开发方式:

复合主键与主键只能选择其中一种使用
hibernate框架学习之主键生成策略generator的更多相关文章
- Hibernate框架笔记02_主键生成策略_一级缓存_事务管理
目录 0. 结构图 1. 持久化类的编写规则 1.1 持久化和持久化类 1.2 持久化类的编写规则 2. 主键生成策略 2.1 主键的分类 2.2 主键生成策略 3. 持久化类的三种状态[了解] 3. ...
- (转) Hibernate持久化类与主键生成策略
http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...
- Hibernate之:各种主键生成策略与配置详解
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...
- java框架之Hibernate(2)-持久化类&主键生成策略&缓存&事务&查询
持久化类 概述 持久化:将内存中的对象持久化到数据库中的过程就是持久化.Hibernate 就是用来进行持久化的框架. 持久化类:一个 Java 对象与数据库的表建立了映射关系,那么这个类在 Hibe ...
- Hibernate(4)——主键生成策略、CRUD 基础API区别的总结 和 注解的使用
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: hibernate的主键生成策略 UUID 配置的补充:hbm2ddl.auto属性用法 注解还是配置文件 h ...
- Hibernate的几种主键生成策略
主键类型: 业务主键(natural key):业务主键的值是来源于一个业务数据. 代理主键(surrogate key):代理主键需要采用一种方式来生成某个唯一值. 代理主键的生成策略: 1.hib ...
- Hibernate遇到oracle之主键生成策略
一直用Hibernate+mysql,感觉Hibernate很好用,也出过什么大问题:这周,公司的产品要部署到Orecle,虽然产品号称支持Oracle但是我自己知道,这个产品压根儿就没在Oracle ...
- hibernate(二)主键生成策略
hibernate主键生成策略主要指的是在实体类orm的配置 <id name=""> <generator class="native"&g ...
- hibernate框架学习笔记4:主键生成策略、对象状态
创建一个实体类: package domain; public class Customer { private Long cust_id; private String cust_name; pri ...
随机推荐
- Ubuntu调节屏幕亮度
下面的方式支持双屏,最多支持四个屏幕调节亮度. sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt-get upd ...
- 互斥量、条件变量与pthread_cond_wait()函数的使用,详解(二)
1.Linux“线程” 进程与线程之间是有区别的,不过linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身只有进程的概念,而其所谓的“线程” ...
- Dubbo管控台安装(zookeeper单机版)
1. zookeeper安装(单机版):http://www.cnblogs.com/wangfajun/p/5251159.html √ 注意:我这里的dubbo-admin.war是2.5.3版 ...
- Tips and Tricks for Debugging in chrome
Tips and Tricks for Debugging in chrome Pretty print On sources panel ,clicking on the {} on the bot ...
- Hibernate的注解和检索
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...
- Groovy&开发环境
Jenkinsfile开发语言 -- Groovy http://www.groovy-lang.org/ A multi-faceted language for the Java platform ...
- Linux或UNIX系统配置检查
1. Linux或UNIX系统配置检查 系统配置的扫描是基于被动式策略进行扫描,主要检测主机上是否存在配置错误或者不符合预定义的安全策略的配置,通常需要管理员权限才能执行的扫描. 在Linux或UNI ...
- :target方法实现切换
<!DOCTYPE HTML><html><head> <title>:target切换</title> <meta charset= ...
- Java -cp 命令行引用多个jar包的简单写法(Windows、Linux
1.Windows下用法 在Windows上,可以使用 用法:java your-jar-lib-folder/* your-main-class your-jar-lib-folder为存放一堆ja ...
- 数据库并发控制及SQL Server的并发控制机制
在多用户和网络环境下,数据库是一个共享资源,多个用户或应用程序同时对数据库的同一数据对象进行读写操作,这种现象称为对数据库的并发操作.显然并发操作可以充分利用系统资源,提高系统效率.虽然如此,但是如果 ...