PO(Persistant Object)能够当作是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录能够用PO的集合。PO中应该不包含任何对数据库的操做。 好处就是能够把一条记录做为一个对象处理,能够方便的转为其余对象。
PO由一组属性和属性的get和set方法组成。
PO是在向数据库中添加新数据时建立,删除数据库中数据时削除。而且PO只能存活在一个数据库链接中,断开链接就被销毁。
PO是有状态的,每一个属性表明其当前的状态,他是物理数据的对象表示。使用它,可使咱们的程序与物理数据解耦,而且能够简化对象数据与物理数据之间的转换。
PO属性是跟数据库表的字段一一对应的。PO对象须要实现序列化接口。前端
value object值对象。一般用于业务层之间的数据传递,和PO同样也是仅仅包含数据而已。但应是抽象出的业务对象,能够和表对应,也能够不,这根据业务的须要.我的以为同DTO(数据传输对象),在web上传递。
VO由一组属性和属性的get和set方法组成。
VO是用new关键字建立,由GC回收。
VO是值对象,或者说是业务对象,是存活在业务层,是业务逻辑使用的,意义在于为微数据提供一个生存的地方。
VO的属性是根据当前业务的不一样而不一样,即,它的每个属性都一一对应当前业务逻辑所须要的数据的名称。java
Data Access Object数据访问对象,是sun的一个标准j2ee设计模式 .此对象用于访问数据库。一般和PO结合使用,DAO中包含了各类数据库的操做方法。经过它的方法,结合PO对数据库进行相关的操做。夹在业务逻辑与数据库资源中间。配合VO, 提供数据库的CRUD操做。web
BO(Business Object)业务对象,封装业务逻辑的java对象,经过调用DAO方法,结合PO,VO进行业务操做。这个对象能够包括一个或多个其它的对象。
好比一个简历,有教育经历、工做经历、 关系等等。咱们能够把教育经历对应一个PO,工做经历对应一个PO, 关系对应一个PO。创建一个对应简历的BO对象处理简历,每一个BO包含这些PO。这样处理业务逻辑时,咱们就能够针对BO去处理。
关于BO主要有三种概念 :面试
在实际使用中,认为哪种概念正确并不重要,关键是实际应用中适合本身项目的须要数据库
POJO(Plain Ordinary Java Object简单无规则java对象)是纯粹的传统意义的java对象。就是说在一些Object Relation Mapping工具中,可以作到维护数据库表记录的persisent object彻底是一个符合Java Bean规范的纯Java对象,没有增长别的属性和方法,即,最基本的Java Bean,只有属性字段及setter和getter方法!设计模式
DTO(Data Transfer Object,数据传输对象)主要用于远程调用等须要大量传输对象的地方。 好比说,咱们一张表有100个字段,那么对应的PO就有100个属性。可是咱们界面上只要显示10个字段, 客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端, 这时咱们就能够用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端之后,若是用这个对象来对应界面显示,那此时它的身份就转为VO。 DTO 是一组须要跨进程或网络边界传输的聚合数据的简单容器。它不该该包含业务逻辑,并将其行为限制为诸如内部一致性检查和基本验证之类的活动。注意,不要因实现这些方法而致使 DTO 依赖于任何新类。在设计数据传输对象时,您有两种主要选择:使用通常集合;或使用显式的 getter 和 setter 方法建立自定义对象。安全
不一样类型的对象在架构设计中用于不一样的用途,以下的分层架构表示了各个 POJO 的用途。是为了确保各个分层可以很好地封装本身的服务,有效地控制信息的传播,在分层结构中对POJO对象进行定义。 网络
以一个实例来探讨下 POJO 的使用。假设咱们有一个面试系统,数据库中存储了不少面试题,经过 web 和 API 提供服务。可能会作以下的设计:架构
能够看到,进行 POJO 划分后,咱们获得了一个设计良好的架构,各层数据对象的修改彻底能够控制在有限的范围内。app
参考文献: