`
120153216
  • 浏览: 62000 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

PO类在数据层和VO类在逻辑层的区别

    博客分类:
  • java
阅读更多
理解PO类在数据层和VO类在逻辑层的区别
对PO和VO区别的解释:

“ VO,值对象(Value Object),
    PO,持久对象(Persisent Object),它们是由一组属性和属性的get和set方法组成。Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。

1.VO是用new关键字创建,由GC回收的。
  PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。

2.VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。(数据直接在VO上)
  PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。(对象和数据分开但是互相转换)

3.VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。(与业务的数据有关)
  PO的属性是跟数据库表的字段一一对应的。(与数据库的字段数据有关)

PO对象需要实现序列化接口。

”

我想对第二点再深入一点,即 PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示.

VO是值对象,精确点讲它是业务对象,它存活的目的就是为数据提供一个生存的地方.

 
来源:(http://blog.sina.com.cn/s/blog_5739dba70100cmvv.html) - 理解PO类在数据层和VO类在逻辑层的区别_KungaChark_新浪博客
hibernate中利用PO类对数据库的操作如下(Emp为PO类):

Emp emp = (Emp) session.load(Emp.class, "005");

Emp.class语句的意思是:Emp已经被编译成.class文件后,再用Emp.class的方法从java虚拟机中获取代表Emp类的字节码数据的Class实例对象。

就是说hibernate对PO的操作是对编译后的字节码文件进行操作的,而字节码.class文件是通过映射文件Emp.hbm.xml对数据库的数据封装后被类装载器放到HashTable中,供java虚拟机调用,也就是如上文所说的“VO是物理数据的对象表示”.当事务提交时,通过执行SQL的inset,update,delete语句把内存的状态同步到数据库中。

 
而VO类(BookInfo 是VO类):

 public byte[] getCover(BookInfo book) throws SQLException {

   BookInfo book1 = (BookInfo) sqlMap.queryForObject("getCover",book);
   return book1.getCover();
 }

ibatis对VO类的操作是对BookInfo的.java文件操作,而不是对.class文件操作,所以VO是在业务层的,它是业务对象,值是随着逻辑的改变而改变的。

 

分享到:
评论

相关推荐

    po与vo区别.doc

    在Java开发领域,尤其是涉及到Spring框架以及数据持久化时,我们常常会遇到“PO”(Plain Old Java Object)和“VO”(Value Object)这两个概念。它们都是Java对象,但各自有不同的用途和特点。理解它们的区别对于...

    vopo转换工具类及所需jar

    总的来说,"vopo转换工具类及所需jar"是一个简化vopo数据格式转换的解决方案,它包含了一个数据验证助手和一个主要的转换器类,以及一系列的外部依赖库。通过这个工具,开发者可以在处理vopo数据时提高效率,减少...

    JAVA中的POJO、VO、PO、DO、DTO都是什么?有什么区别?

    5. DTO(Data Transfer Object):数据传输对象,主要用途是在服务层和表示层之间传输数据。DTO不包含任何业务逻辑,只是简单地封装数据,以避免跨层的数据耦合。在分布式系统或服务之间进行数据交换时,DTO是常用的...

    po vo dto bo to

    - 在实际开发中,PO对象常用于封装数据层查询或修改的结果,便于在其他层(如业务逻辑层或表现层)使用。 #### 三、VO (Value Object) 值对象 **定义:** - VO是一种只包含数据属性的简单Java对象,通常用于封装...

    Oracle 自动生成POVO工具

    在Java开发中,POJO和VO类经常被用于数据传输和持久化层,它们是业务逻辑和数据模型之间的桥梁。此工具能够根据数据库表结构自动创建对应的Java类,从而减轻了手动编写这些类的工作量。 POJO类通常代表数据库中的一...

    关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释

    与 PO 不同,VO(Value Object)是值对象,它是业务对象,是存活在业务层的,是业务逻辑使用的。VO 的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 PO ...

    java术语(PO/POJO/VO/BO/DAO/DTO)

    在Java开发中,我们经常会遇到各种各样...例如,PO和DAO一起用于数据持久化,BO处理业务逻辑,而VO和DTO则专注于数据的传输和展示。了解这些术语,对于提升代码质量、提高团队沟通效率以及优化系统设计都具有重要意义。

    Java的(PO,VO,TO,BO,DAO,POJO)解释

    VO在Web上传递中也可以和DTO(数据传输对象)混淆,但它们之间有一些细微的区别。 TO(Transfer Object)数据传输对象 TO是Java中的数据传输对象,在应用程序不同关系之间传输的对象。TO通常用于数据的传输和交换,...

    自身关联的添加、检索及PO到VO得封装、转换

    在IT行业中,自身关联是一种常见的数据库设计技巧,用于表示一个实体可以与其...在实际开发中,这种设计允许构建复杂的数据结构,如树形菜单或权限系统,同时PO到VO的转换是数据层和业务层交互中常见的数据处理方式。

    bo,vo,po的区别

    在IT行业中,尤其是在Java开发领域,我们经常遇到“VO”、“BO”和“PO”这样的术语,它们分别代表了Value Object、Business Object和Persistent Object。理解这三个概念对于编写清晰、可维护的代码至关重要。 首先...

    Java的几种对象(PO-VO-DAO-BO-POJO)解释

    值对象(Value Object,简称VO),通常用于业务层之间的数据传递,与PO类似,它也仅包含数据。但是,VO更倾向于抽象出具体的业务对象,可以根据实际业务需求选择是否与数据库表进行对应。在Web开发中,VO经常被用作...

    java(PO,VO,BO,DAO,POJO)Explained Collection

    Java开发中,PO(Persistant Object)、VO(Value Object)、BO(Business Object)、DAO(Data Access Object)和POJO(Plain Old Java Object)是常见的五个概念,它们在软件设计和开发中扮演着不同的角色。...

    VO / DTO / BO / ORM DAO entity DO PO/ POJO(分层领域模型规约)整理

    本文将详细介绍VO (View Object)、DTO (Data Transfer Object)、BO (Business Object)、ORM (Object Relational Mapping)、DAO (Data Access Object)、Entity (实体)、DO (Data Object)、PO (Persistent Object)、...

    java的几种对象(PO_VO_DAO_BO_POJO)解释

    本文将深入探讨五种常见的Java对象类型:持久化对象(Persistent Object,简称PO)、值对象(Value Object,简称VO)、数据访问对象(Data Access Object,简称DAO)、业务对象(Business Object,简称BO)和平凡的...

    结合struts和hibernate谈J2EE架构的数据表示.doc

    VO的作用在于封装业务逻辑所需的数据,它可以是由FormBean转化而来,也可以直接由PO转换得到,但其结构应该符合业务规则,而不是简单地复制Web层或持久层的数据结构。在用户查询信息的例子中,VO可能包含一个全名...

    J2EE架构数据表示:Struts+Hibernate

    在传统的J2EE架构中,VO和PO通常需要在业务层进行转换,以保持层间解耦。然而,由于Hibernate的强大功能,PO可以直接用作VO,简化了数据转换的过程。 ActionFormBean和PO之间的差异在于,ActionFormBean是Web交互的...

    java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解

    它们之间的关系是:BO 封装业务逻辑,调用 DAO 方法,结合 PO 和 VO 进行业务操作。DAO 中包含了各种数据库的操作方法,通过它的方法,结合 PO 对数据库进行相关的操作。DTO 和 TO 是用于传输数据的对象,可以减少...

    java中的缩写

    VO,值对象,主要用于在不同的层间传递数据,特别是在表现层与业务逻辑层之间。VO对象通常不具有业务逻辑,而是作为数据载体,用于封装数据并在不同组件间进行传输。与PO不同,VO更侧重于表示层的数据展示需求,其...

    基于java中的PO VO DAO BO POJO(详解)

    在Java开发中,特别是在企业级应用领域,有几种常见的对象模型,它们分别是PO(Persistent Object)、VO(Value Object)、DAO(Data Access Object)、BO(Business Object)和POJO(Plain Old Java Object)。...

Global site tag (gtag.js) - Google Analytics