hibernate框架学习之持久化对象OID

Posted 架构师小跟班

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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选择应尽量避免使用自然主键,改用代理主键












以上是关于hibernate框架学习之持久化对象OID的主要内容,如果未能解决你的问题,请参考以下文章

hibernate框架学习之持久化对象OID

[ SSH框架 ] Hibernate框架学习之四(JPA)

Hibernate学习之简单应用

hibernate框架学习之数据查询(QBC)

hibernate框架学习之使用SQLQuery查询数据

hibernate框架学习之核心API