《阿里巴巴Java开发规范》 关于领域模型的部分介绍如下:

分层领域模型规约:

DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。

DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。

BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。

AO(ApplicationObject):应用对象,在Web层与Service层之间抽象的复用对象模型, 极为贴近展示层,复用度不高。

VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传输。

领域模型命名规约:

数据对象:xxxDO,xxx即为数据表名
数据传输对象:xxxDTO,xxx为业务领域相关的名称。
展示对象:xxxVO,xxx一般为网页名称。

POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。

一、PO :(persistant object ),持久对象

可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。

二、VO :(value object) ,值对象

通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。

PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。

三、DAO :(Data Access Objects) ,数据访问对象接口

DAO是Data Access Object数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。

J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码。

DAO模式是标准的J2EE设计模式之一.开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开.一个典型的DAO实现有下列几个组件:

一个DAO工厂类;
一个DAO接口;
一个实现DAO接口的具体类;
数据传递对象(有些时候叫做值对象)。
具体的DAO类包含了从特定的数据源访问数据的逻辑。

四、BO :(Business Object),业务对象层

表示应用程序领域内“事物”的所有实体类。这些实体类驻留在服务器上,并利用服务类来协助完成它们的职责。

五、DTO Data Transfer Object数据传输对象

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

六、POJO :(Plain Old Java Objects),简单的Java对象

实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接.其中有一些属性及其getter、setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用。

当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

领域模型 PO、VO、DAO、BO、DTO、POJO相关推荐

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

    本文转自: http://blog.csdn.net/bzhxuexi/article/details/8227808 Java的几种对象(PO,VO,DAO,BO,POJO)解释   一.PO:pe ...

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

      [ 作者:赵小刀 ][ 大小:1k ][ 发布日期:2005-08-22 ][ 浏览:8678 ]      java的几种对象(PO,VO,DAO,BO,POJO)解释      一.PO:pe ...

  3. java vo对象转bo对象_java的几种对象(PO,VO,DAO,BO,POJO)解释(转)

    PO:persistant object持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合. PO中应该不包含任何对数据库 ...

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

    PO PO(Persistant Object)可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操 ...

  5. PO,VO,DAO,BO,POJO 之间的区别你懂吗?

    VO value object:值对象. 通常用于业务层之间的数据传递,由new创建,由GC回收. PO persistant object:持久层对象. 对应数据库中表的字段.VO 和 PO 都是属 ...

  6. java 数据对象_java的几种对象(PO,VO,DAO,BO,POJO)

    一.PO persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数 ...

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

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象 ...

  8. 区分PO,VO,DAO,BO,POJO

    VO value object:值对象. 通常用于业务层之间的数据传递,由new创建,由GC回收. PO persistant object:持久层对象. 对应数据库中表的字段.VO 和 PO 都是属 ...

  9. PO,VO,DAO,BO,POJO之间的区别与解释

    VO value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收. PO persistant object:持久层对象 对应数据库中表的字段. VO和PO,都是属性加上 ...

  10. 【spring】PO,VO,DAO,BO,POJO,Bean之间的区别与解释

    VO value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收. PO persistant object:持久层对象 对应数据库中表的字段. VO和PO,都是属性加上 ...

最新文章

  1. Linux上安装paramiko模块
  2. JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .
  3. python面试-Python面试常问的10个问题
  4. wxWidgets:线程间和进程间通信
  5. Android中handler的使用及原理---学习笔记
  6. python下载网页歌词_python3个人学习笔记-批量下载分析歌词2
  7. JSON 格式化 显示到页面中
  8. springboot多环境切换
  9. c语言打印%-6llu,从零开始学C语言
  10. 用css去除chrome、safari等webikt内核浏览器对控件默认样式
  11. centos6下安装php7的memcached扩展
  12. 计算机驱动打不开,驱动人生打不开怎么办
  13. zabbix邮箱告警配置
  14. C++学习记录7:定义教师类Teacher和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)
  15. 上计算机课睡觉检讨书400,课堂上睡觉检讨书范文
  16. visio流程图的叉号_【转】Visio绘制WEB流程图的心得
  17. Ubuntu系统配置花生壳内网穿透
  18. Navicat查看表的sql语句
  19. 深度学习服务器配置过程
  20. 一种激光透窗摄像机,可透过玻璃抓拍人脸

热门文章

  1. CSS 阴影技巧与细节
  2. 使用免费小图标(趣味)
  3. python爬虫之英汉互译(爬虫+pyqt5)
  4. 青云QingCloud推出CDN加速服务 动态选择最优节点
  5. ssh和telnet客户软件ZOC如何设置UTF-8
  6. AVPlayerItem的播放时间
  7. ffprobe 获取视频每秒总帧数或视频总帧数及视频总时长
  8. 一行代码教你撩妹手到擒来❤html+css+js烟花告白3D相册(含音乐+可自定义文字)520表白/七夕情人节/求婚
  9. 2023 年大淘宝 Web 端技术概览
  10. GitHub完整使用教程