java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释

PO

  PO(Persistant Object)能够当作是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录能够用PO的集合。PO中应该不包含任何对数据库的操做。 好处就是能够把一条记录做为一个对象处理,能够方便的转为其余对象。
  PO由一组属性和属性的get和set方法组成。
  PO是在向数据库中添加新数据时建立,删除数据库中数据时削除。而且PO只能存活在一个数据库链接中,断开链接就被销毁。
  PO是有状态的,每一个属性表明其当前的状态,他是物理数据的对象表示。使用它,可使咱们的程序与物理数据解耦,而且能够简化对象数据与物理数据之间的转换。
  PO属性是跟数据库表的字段一一对应的。PO对象须要实现序列化接口。前端

VO

  value object值对象。一般用于业务层之间的数据传递,和PO同样也是仅仅包含数据而已。但应是抽象出的业务对象,能够和表对应,也能够不,这根据业务的须要.我的以为同DTO(数据传输对象),在web上传递。
  VO由一组属性和属性的get和set方法组成。
  VO是用new关键字建立,由GC回收。
  VO是值对象,或者说是业务对象,是存活在业务层,是业务逻辑使用的,意义在于为微数据提供一个生存的地方。
  VO的属性是根据当前业务的不一样而不一样,即,它的每个属性都一一对应当前业务逻辑所须要的数据的名称。java

DAO

  Data Access Object数据访问对象,是sun的一个标准j2ee设计模式 .此对象用于访问数据库。一般和PO结合使用,DAO中包含了各类数据库的操做方法。经过它的方法,结合PO对数据库进行相关的操做。夹在业务逻辑与数据库资源中间。配合VO, 提供数据库的CRUD操做。web

BO

  BO(Business Object)业务对象,封装业务逻辑的java对象,经过调用DAO方法,结合PO,VO进行业务操做。这个对象能够包括一个或多个其它的对象。
  好比一个简历,有教育经历、工做经历、 关系等等。咱们能够把教育经历对应一个PO,工做经历对应一个PO, 关系对应一个PO。创建一个对应简历的BO对象处理简历,每一个BO包含这些PO。这样处理业务逻辑时,咱们就能够针对BO去处理。
  关于BO主要有三种概念 :面试

  • 只包含业务对象的属性;
  • 只包含业务方法;
  • 二者都包含。

  在实际使用中,认为哪种概念正确并不重要,关键是实际应用中适合本身项目的须要数据库

POJO

  POJO(Plain Ordinary Java Object简单无规则java对象)是纯粹的传统意义的java对象。就是说在一些Object Relation Mapping工具中,可以作到维护数据库表记录的persisent object彻底是一个符合Java Bean规范的纯Java对象,没有增长别的属性和方法,即,最基本的Java Bean,只有属性字段及setter和getter方法!设计模式

  • 一个POJO持久化之后就是PO;
  • 直接用它传递,传递过程当中就是DTO;
  • 直接用来对应表示层就是VO。

DTO

  DTO(Data Transfer Object,数据传输对象)主要用于远程调用等须要大量传输对象的地方。 好比说,咱们一张表有100个字段,那么对应的PO就有100个属性。可是咱们界面上只要显示10个字段, 客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端, 这时咱们就能够用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端之后,若是用这个对象来对应界面显示,那此时它的身份就转为VO。 DTO 是一组须要跨进程或网络边界传输的聚合数据的简单容器。它不该该包含业务逻辑,并将其行为限制为诸如内部一致性检查和基本验证之类的活动。注意,不要因实现这些方法而致使 DTO 依赖于任何新类。在设计数据传输对象时,您有两种主要选择:使用通常集合;或使用显式的 getter 和 setter 方法建立自定义对象。安全

应用

  不一样类型的对象在架构设计中用于不一样的用途,以下的分层架构表示了各个 POJO 的用途。是为了确保各个分层可以很好地封装本身的服务,有效地控制信息的传播,在分层结构中对POJO对象进行定义。 网络

java对象应用图
  若是没有 VO 和 PO 的区别,那么数据库表结构的全部字段就尽收眼底地展现到了前端,给后台安全带来很大的隐患,而且没法在网络传输中剥离冗余信息提升了用户的带宽成本

实例分析

  以一个实例来探讨下 POJO 的使用。假设咱们有一个面试系统,数据库中存储了不少面试题,经过 web 和 API 提供服务。可能会作以下的设计:架构

  1. 数据表:表中的面试题包括编号、题目、选项、答案、建立时间、修改时间;
  2. PO:包括题目、选项、答案、建立时间、修改时间;
  3. VO:题目、选项、答案、上一题URL、下一题URL;
  4. DTO:编号、题目、选项、答案、上一题编号、下一题编号;
  5. DAO:数据库增删改查方法;
  6. BO:业务基本操做。

  能够看到,进行 POJO 划分后,咱们获得了一个设计良好的架构,各层数据对象的修改彻底能够控制在有限的范围内。app

参考文献:

相关文章
相关标签/搜索