`
kunga
  • 浏览: 10460 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

理解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是值对象,精确点讲它是业务对象,它存活的目的就是为数据提供一个生存的地方.



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

    在IT行业中,我们经常需要处理各种...通过这个工具,开发者可以在处理vopo数据时提高效率,减少错误,同时也能更好地理解和控制转换过程。在实际应用中,理解并熟练使用这类工具,对于提升开发效率和代码质量至关重要。

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

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

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

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

    po vo dto bo to

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

    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通常用于数据的传输和交换,...

    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经常被用作...

    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)和平凡的...

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

    Java 中 PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn 的理解 PO(Persistent Object):持久对象,指的是在 O/R Mapping 中将对象与关系数据库绑定的对象。PO 是由一组属性和属性的 get 和 set 方法组成。它...

    java中的缩写

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

    《业务开发建议》1

    - VO主要应用于业务逻辑层和视图层(控制层和前端页面)的数据交换。控制层通常会将VO对象转化为JSON传递给前端页面。 - PO是MyBatis生成的对象,通常继承自`PoBase`类,可通过泛型实现当前PO对象的`cloneSelf`方法...

    java代码生成器

    Java代码生成器就是为了解决这个问题而设计的,它可以自动生成PO(Plain Old Java Object)、VO(Value Object)、DAO(Data Access Object)和Service层的Java类。 1. PO(Plain Old Java Object):PO对象通常...

    9月23日用友致远面试题

    1. **VO (Value Object)**:值对象,主要用于封装数据,在业务逻辑层与展示层之间传递数据。VO一般用于展示层,如前端页面显示的数据。 2. **BO (Business Object)**:业务对象,用于封装业务逻辑,包含了一些业务...

    Javabean与DTO的区别.docx

    - **Web 开发**:在 JSP 中,JavaBean 常被用来封装业务逻辑或数据,实现视图层和逻辑层的分离。 - **桌面应用**:用于创建可复用的控件或组件。 - **企业级应用**:在服务器端处理复杂的业务流程。 #### 二、DTO...

    MVC设计模式

    ### MVC设计模式详解 #### 一、MVC设计模式概念 MVC模式,全称Model-View-Controller(模型-视图-控制器)模式,是一种广泛应用于软件...同时,了解POJO和JavaBean的区别有助于更好地理解MVC架构中的数据处理逻辑。

Global site tag (gtag.js) - Google Analytics