Java中PO,VO,POJO,DTO,DAO的基本概念

 

PO:
persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。

 

BO:
business object业务对象
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、社会 关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会 关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。

 

VO :
value object值对象
ViewObject表现层对象
主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。

 

DTO :
Data Transfer Object数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO

 

POJO :
plain ordinary java object 简单java对象
个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。
一个POJO持久化以后就是PO
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO

 

DAO:
data access object数据访问对象
这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.
主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO

 

 

原帖地址:http://apps.hi.baidu.com/share/detail/19930469

时间: 2024-09-17 04:24:12

Java中PO,VO,POJO,DTO,DAO的基本概念的相关文章

JavaEE PO VO BO DTO POJO DAO 整理总结

阅读目录 1.DAO[data access object]数据访问对象 2.DTO[data transfer object]数据传输对象 3.PO[persistant object]持久层对象 4.BO[bussiness object]业务对象 5.VO[value object]值对象 4.POJO[plain ordiary java object] 简单java对象         佩服能将复杂难懂的技术,抽象成简单易懂事物的人.         厌恶将简单易懂的技术,添加一堆专业

java中的接口与实现

我们通常认为访问控制是"隐藏实施细节"的一种方式.将数据和方法封装到类内后,可生成一种数据类型,它具有自己的特征与行为.但由于两方面重要的原因,访问为那个数据类型加上了自己的边界.第一个原因是规定客户程序员哪些能够使用,哪些不能.我们可在结构里构建自己的内部机制,不用担心客户程序员将其当作接口的一部分,从而自由地使用或者"滥用". 这个原因直接导致了第二个原因:我们需要将接口同实施细节分离开.若结构在一系列程序中使用,但用户除了将消息发给public接口之外,不能做

领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处

转自:http://kb.cnblogs.com/page/522348/ 上一篇文章作为一个引子,说明了领域驱动设计的优势,从本篇文章开始,笔者将会结合自己的实际经验,谈及领域驱动设计的应用.本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和PO. 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起

Java中VO的设计

问题描述 如题,简化问题,打个比方,两个实体类:Student,Book,Student:id,bookId属性,对应student表中id,bookId字段Book:id,bookName,author属性,对应book表中的id,bookName,author等字段现在设计一个StudentVO,两种方案1包含studentId,bookVO2包含studentId,bookName,author第一种方案:每次获取一个StudentVO需要先到数据库中获取Student,转换成Studen

接口继承-关于java中Dao模块接口问题,请教一下原理

问题描述 关于java中Dao模块接口问题,请教一下原理 BaseDao.java public interface BaseDao {} BaseDaoImpl.java public abstract class BaseDaoImpl implements BaseDao {} UserService.java public interface UserService extends BaseDao{} UserServiceImpl.java public class UserServi

java中有关使用dao的问题

问题描述 java中有关使用dao的问题 在使用DAO时,什么情况下会把DAO做成一个类:什么情况下做成一个接口让别人去实现? 解决方案 简单的情况下做成一个类.如果客户需要程序支持多个数据库(比如同时支持mysql和oracle),那么就做成接口,以及两个实现类.并且根据用户的需要灵活组合. 解决方案二: Hibernate中使用dao时注意问题

java中使用反射获取pojo(实体)类的所有字段值

       说起反射,不得不说它实在是太强大了,通过反射就可以轻轻松松拿到各种东东,如果你想在项目中解除对某个类的依赖,可以考虑用反射.        今天跟大家分享的是通过java中的反射,获取pojo类的所有字段值.        为什么要做这个操作的呢?主要是为了重写实体类的toString方法.有人会说,直接重写toString方法,返回字段.toString()的字符串不就行了.这么做的确可以,但是如果你的pojo类有上百个,上千个,你还要一个一个改吗?所以我们需要从新的方向去解决.

Java的MyBatis+Spring框架中使用数据访问对象DAO模式的方法_java

SqlSessionTemplateSqlSessionTemplate是MyBatis-Spring的核心.这个类负责管理MyBatis的SqlSession,调用MyBatis的SQL方法,翻译异常.SqlSessionTemplate是线程安全的,可以被多个DAO所共享使用. 当调用SQL方法时,包含从映射器getMapper()方法返回的方法,SqlSessionTemplate将会保证使用的SqlSession是和当前Spring的事务相关的.此外,它管理session的生命周期,包含

Java中jqGrid 学习笔记整理——进阶篇(二)_java

相关阅读: Java中jqGrid 学习笔记整理--进阶篇(一) 本篇开始正式与后台(java语言)进行数据交互,使用的平台为 JDK:java 1.8.0_71 myEclisp 2015 Stable 2.0 Apache Tomcat-8.0.30 Mysql 5.7 Navicat for mysql 11.2.5(mysql数据库管理工具) 一.数据库部分 1.创建数据库 使用Navicat for mysql创建数据库(使用其他工具或直接使用命令行暂不介绍) 2. 2.创建表 双击打