zoukankan      html  css  js  c++  java
  • hibernate框架学习之持久化对象OID

    持久化对象唯一标识——OID

    1)数据库中使用主键可以区分两个对象是否相同
    2)Java语言中使用对象的内存地址区分对象是否相同
    3)Hibernate中使用OID区分对象是否相同
    Hibernate认为每一个不同的对象应该具有一个唯一的标识,称这个标识为OID;
    为了使数据模型与数据库表一样使用主键来进行数据的区分,在数据模型类中声明唯一标识(uuid),作为Hibernate管理对象的唯一标识,并使用该标识与数据库表中的主键进行一一对应;
    为配合后期框架的使用,还使用该标识设定Java对象区分的规则,即参照此属性生成hashCode与equals方法。

    OID的选取规则
    1)Java对象中可以使用任意属性作为OID,为什么要使用uuid作为唯一标识
    2)自然主键:具有业务含义
    例如个人信息中的身份证号,不仅是唯一的,而且还具有业务含义,这种属性虽然可以做为OID,但是其具有一定的业务含义。选择OID尽量避免使用具有业务含义的属性
    3)代理主键:不具有业务含义
    声明一个不具有任何业务含义的属性,仅用于区分对象,这种属性即便暴漏给最终用户查看,也不具有安全隐患
    4)OID选择应尽量避免使用自然主键,改用代理主键

  • 相关阅读:
    发短信集合类-阿里云短信涉及类
    第四方 fast快捷支付封装
    佰米支付封装
    支付宝支付封装【修改至2021.01.11】
    关于支付
    tp5下的文件上传与下载类
    发送短信集合类
    文件中设置开启访问权限
    SpringBoot注解分析
    HashMap底层实现原理及面试问题
  • 原文地址:https://www.cnblogs.com/xyhero/p/9348889.html
Copyright © 2011-2022 走看看