PO(bean、entity等命名):

Persistant Object持久对象,数据库表中的记录在java对象中的显示状态

最形象的理解就是一个PO就是数据库中的一条记录。

好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。

BO(service、manager、business等命名):

Business Object业务对象

主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。

形象描述为一个对象的形为和动作,当然也有涉及到基它对象的一些形为和动作。比如处理

一个人的业务逻辑,有睡觉,吃饭,工作,上班等等形为还有可能和别人发关系的形为。

这样处理业务逻辑时,我们就可以针对BO去处理。

VO(from也有此写法) :

Value Object值对象

主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。然后用一个VO对象在控制层与视图层进行传输交换。

DTO (经过处理后的PO,可能增加或者减少PO的属性):

Data Transfer Object数据传输对象

主要用于远程调用等需要大量传输对象的地方。

比如我们一张表有100个字段,那么对应的PO就有100个属性。

但是我们界面上只要显示10个字段,

客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,

这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO

POJO(POJO是一种概念或者接口,身份及作用随环境变化而变化) :

POJO有一些Private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口

Plain Ordinary Java Object简单Java对象

即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。

一个POJO持久化以后就是PO。

直接用它传递、传递过程中就是DTO

直接用来对应表示层就是VO

DAO(Data Access Object数据访问对象):

这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.

主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO

Controller控制层主要是Action/Servlet等构成(目前Spring MVC则是通过@Controller标签使用)

此层业务层与视图层打交道的中间层,负责传输VO对象和调用BO层的业务方法,负责视图层请求的数据处理后响应给视图层。

View(视图层)

主要是指由JSP、HTML等文件形成的显示层。

总结一下要用具体的X0需要看具体环境及项目架构,在不同的层、不同的应用场合,对象的身份也不一样,而且对象身份的转化也是很自然的。就像你对老婆来说就是老公,对父母来说就是子女。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各种逻辑,让大家能更好的去用面向对象的方式处理问题。

在平时开发项目中大家千万过度设计各层,因为这样会带来大量的工作和重复工作。如果不是大型系统可简化一些层,因为技术是为应用服务的。

上述名词在实际项目的应用举例:

控制层(controller-action),业务层/服务层( bo-manager ),实体层(po-entity),dao(dao),视图对象(Vo-本项目省略),视图层(view-jsp/html)

转载于:https://www.cnblogs.com/matd/p/11090324.html

Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转)相关推荐

  1. PO BO VO DTO POJO DAO概念及其作用(附转换图)

    J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋 ...

  2. PO BO VO DTO POJO DAO概念

    刚开始写blog,主要的目的是积累,学习,供日后查找! 如题,今天跟主管交流,被好多名词整蒙了,这些词以前都听说过,但是对其内在的含义并不是很清楚的了解,借此机会写上来,增加记忆和理解吧. 一下是原文 ...

  3. JAVA中PO,BO,VO,DTO,POJO,Entity

    https://my.oschina.net/liaodo/blog/2988512 转载于:https://www.cnblogs.com/dianzan/p/11311217.html

  4. Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

    Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分 PO:持久对象 (persistent object),po(persiste ...

  5. PO/BO/VO/DTO/POJO/DAO/DO

    文章目录 DO(Domain Object) DO(Data Object) PO VO BO DTO POJO DAO JavaBean EJB Entity 应用程序的分层设计 MVC 业务分层 ...

  6. PO BO VO DTO POJO DAO DO 在java中的概念

    PO BO DTO VO POJO PO DTO VO BO 都叫POJO,就是个简单的java对象: DAO 是进行数据库增删改查的类. BO 业务对象,封装对象.复杂对象 ,里面可能包含多个类: ...

  7. java常见业务对象_Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分...

    PO:持久对象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数 ...

  8. java中bean对象_JAVA中PO,BO,VO,DTO,POJO,Entity,JavaBean,JavaBeans各个对象的区别,以及lombo、jpa简介及用法...

    常见JAVA类概念介绍 PO:持久对象 (persistent object). 是ORM(Objevt Relational Mapping)框架中Entity,PO属性和数据库中表的字段形成一一对 ...

  9. PO BO VO DTO POJO DAO DO概念解读

    假如有一张user表,里面有几个字段: user_id user_name pass_word create_time dept_id 假设就这么多吧,一张很基础的表,那么对应Java的写法就是一个类 ...

  10. PO BO VO DTO POJO DAO DO

    假如有一张user表,里面有几个字段: user表 user_id user_name pass_word create_time dept_id 假设就这么多吧,一张很基础的表,那么对应Java的写 ...

最新文章

  1. iOS GCD中级篇 - dispatch_group的理解及使用
  2. spring 整和activemq
  3. 虚拟机 Linux ubuntu16.04 对 windows 设置共享文件夹教程(samba)(ubuntu16.04换源【更换下载源】【更换源】【更新源】)(如果连不上需要开SSH服务)
  4. php遍历文件夹及其子文件夹并计算所占的磁盘空间
  5. OutOfMemoryError(内存溢出)解决办法
  6. Codeforces 1041C(贪心+set)
  7. php 弹出指定窗口大小,弹出div或者弹出新窗口的固定位置、固定大小
  8. python同花顺交易接口_TradeApi为A股程序化交易接口2.9.0发布
  9. Python Day05
  10. 结直肠癌呈年轻化趋势,与肠道微生物群密不可分
  11. 20金融学431考研应该注意些什么
  12. layui附件上传组件,实现layui附件上传组件抽取并改造,基于thymeleaf组件化
  13. [Azure - VM] 解决办法:无法通过SSH连接VM,解决错误:This service allows sftp connections only.
  14. android开发——RecycleView
  15. 如何搭建自己的内测分发平台?有可以直接用的内测分发平台吗?
  16. 【技术美术图形部分】纹理基础1.0-纹理管线
  17. mbio期刊拒稿率_PLoS Pathogens
  18. 一天写多少行代码才算是好程序员?
  19. 密码对的还出现 Access denied for user ‘‘@‘localhost‘ (using password: NO) 错误
  20. 舆情监测意思及监测工作流程详介

热门文章

  1. 常见的和端口,IP相关的企业面试题
  2. FreeBSD基金会添加新成员,梁莉成为第一位来自微软和中国的基金会董事
  3. 【Origin】晨起忆梦
  4. Xcode5下使用纯代码构建简单的HelloWorld程序
  5. 虚拟化入门:用虚拟机安装RHEL 5(下)
  6. upstream--负载
  7. 【知识强化】第二章 进程管理 2.1 进程与线程
  8. 【转】HTTP Header 详解
  9. libcurl网络连接使用tcp/ip
  10. [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏