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的更多相关文章

  1. Hibernate中持久化类与持久化对象

    1.JavaBean类 JavaBean类是实体类,必须一下属性,private修饰的成员属性,public修饰的getter与setter访问方法,public修饰的空参构造器,实现Serializ ...

  2. 三、hibernate中持久化类的使用

    hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hib ...

  3. hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)

    三态的基本概念: 1,  暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象 ...

  4. hibernate中持久化对象的生命周期(转载)

    三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2 ...

  5. hibernate中持久化对象的状态

    持久化对象有以下几种状态: 临时对象(Transient): 在使用代理主键的情况下,  OID 通常为 null  不处于 Session 的缓存中 在数据库中没有对应的记录 持久化对象(也叫”托管 ...

  6. Hibernate中的持久化类

    一.持久化类概述 就是一个JavaBean,这个JavaBean与表建立了映射关系.这个类就称为是持久化类. 简单理解为 持久化类=JavaBean+映射文件. 持久化类:是指其实例需要被Hibern ...

  7. Hibernate的持久化对象

     Hibernate的持久化类 什么是持久化类        1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类.        * ...

  8. Hibernate之持久化对象

    时间:2017-1-19 23:00 --Hibernate持久化类的状态1.持久化类:就是一个实体类与数据库建立了映射.2.Hibernate为了方便管理持久化类,将持久化类分为了三种状态:    ...

  9. 关于hibernate中映射中有many to one等外键关联时的问题

    hibernate中的对象的3种状态的理解及导致报错object references an unsaved transient instance - save the transient insta ...

随机推荐

  1. 数据库之ODPS中sql语句指南

    此篇博文为本人在实际工作中应用总结,转载请注明出处. 持续更新中 一.增 1.增加一列(向csp_hsy_count_info表中增加sale_qty列) ALTER TABLE csp_hsy_co ...

  2. MySQL数据库系列(四)- InnoDB下的共享表空间和独立表空间详解

    一.概念 共享表空间: Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制.从Innod ...

  3. L3-002. 堆栈【主席树 or 线段树 or 分块】

    L3-002. 堆栈 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家都知道"堆栈"是一种"先 ...

  4. 左神算法第一节课:复杂度、排序(冒泡、选择、插入、归并)、小和问题和逆序对问题、对数器和递归(Master公式)

    第一节课 复杂度 排序(冒泡.选择.插入.归并) 小和问题和逆序对问题 对数器 递归 1.  复杂度 认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数 ...

  5. codeforces 8C(非原创)

    C. Looking for Order time limit per test 4 seconds memory limit per test 512 megabytes input standar ...

  6. 操作系统 part5

    1.线程安全 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据污染. 线程不安全就 ...

  7. 解决.dll类等文件丢失或出错

    简单暴力: 去官网下载WIN10 SDK 并安装, 将本机的DLL类文件重新刷新一遍. https://developer.microsoft.com/en-US/windows/downloads/ ...

  8. 2021-2-18:请你说说MySQL的字符集与排序规则对开发有哪些影响?

    任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...

  9. Python errors All In One

    Python errors All In One SyntaxError: invalid character in identifier \u200b, ZERO WIDTH SPACE https ...

  10. 使用 js 实现十大排序算法: 插入排序

    使用 js 实现十大排序算法: 插入排序 插入排序 // 双重循环 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!