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 ...
随机推荐
- LInux Zebra
本文章摘自linux公社 https://www.linuxidc.com/Linux/2015-07/120224p1.htm 写在前面 从22号中午开始琢磨zebra/quagga的用法,一直 ...
- input:checked + label用法
input:checked ~ label :相邻同胞选择器,选择被选中的input标签后 所有的label标签[input 和 label标签有共同的父元素]: input:checked + ...
- Hadoop记录-Hadoop jmx
https://cwiki.apache.org/confluence/display/EAG/Hadoop+JMX+Monitoring+and+Alerting curl http://10.11 ...
- Javascript的作用域和闭包(一)
一.作用域是什么? 几乎所有的编程语言最基本的功能之一,就是能够存储变量的值,并且能访问和修改这些值. 修改变量值的过程我们通常在程序执行时,称为改变一个对象的状态.有了状态,让程序变得有非常有趣. ...
- [转]Red Hat Linux相关产品iso镜像下载【百度云】
超强汇总!献上大佬链接:http://www.linuxfly.org/post/659/ 还有一些可用链接: 下面的直接复制到迅雷下载,链接是打不开的. RHEL 5.4 ISO下载http://r ...
- HDU 1050(搬椅子 数学)
题意是在一个有 400 个房间的走廊中搬动房间里的椅子,如果两次的路线重叠,就要分两次搬动,如果不重叠,就可以一次搬动. 开始的时候直接当成求线段重叠条数的题,发现这种思路完全是错的,比如 1 - 3 ...
- U盘中毒后变为快捷方式的解决方法
今天神奇地发现,如果U盘中毒后,变为快捷方式,那么你可以有三种解决方法: (1)在网上下一个脚本程序,将文件恢复: (2)使用U盘查杀的工具,一般的工具应该有U盘文件恢复这一项,比如金山的杀毒软件: ...
- vertica系列:数据的导入导出
本文仅涉及 Vertica 导入导出本地文件, 以及两个 Vertica 集群相互导出, 不涉及 Vertica 和 hdfs/Hive 导入导出和互操作. copy 数据导入工具 copy 命令无疑 ...
- 【noip 2016】普及组
T1.买铅笔 题目链接 #include<cstdio> #include<algorithm> #include<cstring> using namespace ...
- keras中的重要函数
https://blog.csdn.net/u012969412/article/details/70882296