千家信息网

Hibernate PO和Hibernate VO有哪些区别

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章给大家分享的是有关Hibernate PO和Hibernate VO有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PO(Persistence Objec
千家信息网最后更新 2024年11月23日Hibernate PO和Hibernate VO有哪些区别

这篇文章给大家分享的是有关Hibernate PO和Hibernate VO有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

PO(Persistence Object )VO(Value Object )Hibernate中两个比较关键的概念。
首先,何谓VO,很简单,VO就是一个简单的值对象。

总结:

VO经过Hibernate进行处理,就变成了PO
session.save(user)中,我们把一个VO "user"传递给Hibernate的Session.save方法进行保存。在save方法中,Hibernate对其进行如下处理:

1.在当前session所对应的实体容器(Entity Map)中查询是否存在user对象的引用。

2.如果引用存在,则直接返回user对象id,save过程结束. Hibernate中,针对每个Session有一个实体容器(实际上是一个Map对象), 如果此容器中已经保存了目标对象的引用,那么hibernate会认为此对象已经 与Session相关联。
对于save操作而言,如果对象已经与Session相关联(即已经被加入Session 的实体容器中),则无需进行具体的操作。因为之后的Session.flush过程中,Hibernate会对此实体容器中的对象进行遍历,查找出发生变化的实体,生成
并执行相应的update语句。

3.如果引用不存在,则根据映射关系,执行insert操作。

a) 在我们这里的示例中,采用了native的id生成机制,因此hibernate
从数据库取得insert操作生成的id并赋予user对象的id属性。
b) 将user对象的引用纳入Hibernate的实体容器。
c) save过程结束,返回对象id.
而Session.load方法中,再返回对象之前,Hibernate就已经将此对象纳入其实
体容器中。

Hibernate VO和Hibernate PO的主要区别在于:

◆VO是独立的Java Object。
◆PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。如果一个PO与Session对应的实体容器中分离(如Session关闭后的PO),那么此时,它又会变成一个VO。Hibernate VO和Hibernate PO的概念,又引申出一些系统层次设计方面的问题。如在传统的MVC架构中,位于Model层的PO,是否允许被传递到其他层面。由于PO的更新最终将被映射到实际数据库中,如果PO在其他层面(如View层)发生了变动,那么可能会对Model 层造成意想不到的破坏。

因此,一般而言,应该避免直接PO传递到系统中的其他层面,一种解决办法是,通过一个VO,通过属性复制使其具备与PO相同属性值,并以其为传输媒质(实际上,这个VO被用作Data Transfer Object,即所谓的DTO),将此VO传递给其他层面以实现必须的数据传送。

属性复制可以通过Apache Jakarta Commons Beanutils (http://jakarta.apache.org/commons/beanutils/)组件提供的属性批 量复制功能,避免繁复的get/set操作。

感谢各位的阅读!关于"Hibernate PO和Hibernate VO有哪些区别"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

对象 实体 容器 属性 数据 实际 层面 数据库 方法 过程 生成 内容 实际上 更多 概念 篇文章 系统 关联 变化 处理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发环境sed 南明区友盟网络技术 浙江一站式软件开发项目管理 信息和网络安全体系 福建网络技术开发参考价 湖南数据中心服务器租赁 十三五期间网络安全状况分析 怎么才算网络安全 网络技术应用组建企业网络 武侠q传 服务器 台州集惠网络技术有限公司 关于网络安全的条令 邢台软件开发入门教学哪家好 石林品牌软件开发价格信息 美格网络技术有限公司招聘 数据库父节点的使用 南京管理软件开发需要多少钱 彩麒麟互联网科技有限公司 分布式数据库不可能同时满足 组态软件开发用的什么语言 浙江ios软件开发商 数据库视图安全控件 服务器php代码安全 魔兽世界怀旧在哪里看服务器 域名加服务器一年多少钱 东莞市互联网科技公司 国内好的网络安全培训机构 人保财险软件开发笔试面试全程 购买软件开发费用怎么做账 web可视化数据库建模
0