hibernate 中持久化标识 OID
OID 全称是 Object Identifier,又叫做对象标识符
是 hibernate 用于区分两个对象是否是同一个对象的标识的方法
标识符的作用:可以让 hibernate 来区分多个对象是否是同一个对象
hibernate 的主键生成策略:
- 自然主键:把具有业务含义的字段作为主键,称为自然主键,例如用户表,将 username 作为主键;前提是所有用户的 username 都不会重复,并且不为 null,不允许修改,但一旦出现了username 可以重复的业务需求,就必须修改数据模型,重新定义表的主键,给数据库的维护增加了难度
- 代理主键:把不具有业务含义的字段作为主键,称之为代理主键,该字段一般取名为 “ID”,通常为整数类型(整数比字符串类型节省更多的空间),但是注意主键溢出问题(一般情况下直接就分库分表存储)
lncrement:自动增长,是Hibernate中提供一种自动增长方式,不是数据库中的自动增长。(适用于short、int、long类型的主键),
- 首先使用select max(cust_id) from cst_customer;将这个最大值+1作为下一条记录的主键。
- 对于并发访问数据库不适用
identity:自动增长,适用于short、int、long类型的主键,使用的是数据库自动增长机制。不是所有数据库都支持自动增长,比如Oracle没有自动增长。
sequence :序列,适用于short、int、long类型的主键,使用序列方式完成主键的生成。必须是支持序列的方式的数据库。Oracle的自动增长
native:本地策略,根据底层的数据库不同,自动选择使用identity还是sequence。
- uuid:随机字符串,适用于字符串类型的主键。
- assigned:Hibernate不维护主键,开发人员需要手动设置主键。
结论:如果是针对数值型,选择使用 native, 如果是 varchar 类型,可以使用 uuid,也可以不用 hibernate 维护,自己在程序中手动设定唯一非空(assigned)uuid
hibernate 中持久化标识 OID的更多相关文章
- Hibernate中持久化类与持久化对象
1.JavaBean类 JavaBean类是实体类,必须一下属性,private修饰的成员属性,public修饰的getter与setter访问方法,public修饰的空参构造器,实现Serializ ...
- 三、hibernate中持久化类的使用
hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hib ...
- hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)
三态的基本概念: 1, 暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象 ...
- hibernate中持久化对象的生命周期(转载)
三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2 ...
- hibernate中持久化对象的状态
持久化对象有以下几种状态: 临时对象(Transient): 在使用代理主键的情况下, OID 通常为 null 不处于 Session 的缓存中 在数据库中没有对应的记录 持久化对象(也叫”托管 ...
- Hibernate中的持久化类
一.持久化类概述 就是一个JavaBean,这个JavaBean与表建立了映射关系.这个类就称为是持久化类. 简单理解为 持久化类=JavaBean+映射文件. 持久化类:是指其实例需要被Hibern ...
- Hibernate的持久化对象
Hibernate的持久化类 什么是持久化类 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类. * ...
- Hibernate之持久化对象
时间:2017-1-19 23:00 --Hibernate持久化类的状态1.持久化类:就是一个实体类与数据库建立了映射.2.Hibernate为了方便管理持久化类,将持久化类分为了三种状态: ...
- 关于hibernate中映射中有many to one等外键关联时的问题
hibernate中的对象的3种状态的理解及导致报错object references an unsaved transient instance - save the transient insta ...
随机推荐
- 僵尸进程 & 孤儿进程
参考博文 基本概念 僵尸进程:是所有进程都会进入的一种进程状态,子进程退出,而父进程并没有调用 wait() 或 waitpid() 获取子进程的状态信息,那么子进程的 PID 和 进程描述符 等资源 ...
- 如何加入VNT Hubble主网
环境:Ubuntu20.04 (但以下方法应该只要不是过于老旧的Ubuntu,都行得通) 从源码安装go-vnt 安装Go编译器(版本大于1.9)和C编译器 安装C编译器GCC[1] sudo apt ...
- WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
title: WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS date: 2020-03-20 10:43:00 categories: acm tags: [ ...
- woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
title: woj1013 Barcelet 字符串 date: 2020-03-18 18:00:00 categories: acm tags: [acm,字符串,woj] 字符串,字典序. 1 ...
- HashMap三百问
文章目录: 一.JDK1.7之HashMap 二.JDK1.8之HashMap 三.Hashtable JDK1.7之HashMap 1. 定义 HashMap实现了Map接口,继承AbstractM ...
- HDU 6611 K Subsequence(Dijkstra优化费用流 模板)题解
题意: 有\(n\)个数\(a_1\cdots a_n\),现要你给出\(k\)个不相交的非降子序列,使得和最大. 思路: 费用流建图,每个点拆点,费用为\(-a[i]\),然后和源点连边,和后面非降 ...
- POJ 2778 DNA Sequence(AC自动机 + 矩阵快速幂)题解
题意:给出m个模式串,要求你构造长度为n(n <= 2000000000)的主串,主串不包含模式串,问这样的主串有几个 思路:因为要不包含模式串,显然又是ac自动机.因为n很大,所以用dp不太好 ...
- Unicode & \u2028 & \u2029
Unicode \u2028 & \u2029 https://stackoverflow.com/questions/16686687/json-stringify-and-u2028-u2 ...
- d3 & hexagon
d3 & hexagon https://bl.ocks.org/mbostock/5249328 https://bl.ocks.org/vasturiano/e70e14483fe01eb ...
- Xpath in JavaScript
test html <p>title</p> <ul class="list a" id="list"> <li> ...