领域模型命名规约【PO,VO,POJO,BO,DTO,DO,JavaBean】
PO,VO,POJO,BO,DTO,DO,JavaBean
在这之前我先说一下,在阿里巴巴开发手册中有提到这种领域模型命名规约,即如下图:
下面是更加详细的介绍:
po
PO(Persistant Object)可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
好处就是可以把一条记录作为一个对象处理,可以方便的转为其他对象。
vo
VO值对象,通常用于业务层之间的数据传递,与PO一样仅包含数据,根据业务的需要与抽象出的业务对象实现对应或者非对应。
VO主要对应界面显示的数据对象。对于一个WEB页面,或者SWT/SWING的一个界面,用一个VO对象对应整个界面的值。
pojo
POJO(Plain Ordinary Java Object简单无规则java对象)是纯粹的传统意义的java对象。就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法,即,最基本的Java Bean,只有属性字段及setter和getter方法!
- 一个POJO持久化以后就是PO;
- 直接用它传递,传递过程中就是DTO;
- 直接用来对应表示层就是VO。
bo
BO(Business Object)业务对象,封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、 关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO, 关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。
关于BO主要有三种概念 :
- 只包含业务对象的属性;
- 只包含业务方法;
- 两者都包含。
在实际使用中,认为哪一种概念正确并不重要,关键是实际应用中适合自己项目的需要
dto
DTO(Data Transfer Object,数据传输对象)主要用于远程调用等需要大量传输对象的地方。
比如说,我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段, 客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端, 这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。
DTO 是一组需要跨进程或网络边界传输的聚合数据的简单容器。它不应该包含业务逻辑,并将其行为限制为诸如内部一致性检查和基本验证之类的活动。注意,不要因实 现这些方法而导致 DTO 依赖于任何新类。在设计数据传输对象时,您有两种主要选择:使用一般集合;或使用显式的 getter 和 setter 方法创建自定义对象
do
DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
JavaBean
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
领域模型命名规约【PO,VO,POJO,BO,DTO,DO,JavaBean】相关推荐
- java vo命名规则_阿里java开发手册中命名规约解读之DO/BO/DTO/VO/AO
前言 在阅读<阿里巴巴Java开发手册>时,看到命名规则中有这样一条 虽然知道这些是根据Java对象的角色所分配名称的后缀,但是没有弄清楚分别是什么意思,日常开发中也没有使用到. 网上查找 ...
- java的(PO,VO,TO,BO,DAO,POJO)解释
java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库 ...
- java的(PO,VO,TO,BO,DAO,POJO)解释1
java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...
- java: PO,VO,TO,BO,DAO,POJO 解释
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写 ...
- java反射po转vo_Java项目的(PO,VO,TO,BO,DAO,POJO)解释(转)
它们是由一组属性和属性的get和set方法组成.从结构上看,它们并没有什么不同的地方.但从其意义和本质上来看是完全不同的. 区别 1.VO是用new关键字创建,由GC回收的. PO则是向数据库中添加新 ...
- java的(PO,VO,TO,BO,DAO,POJO)类名包名解释
java的(PO,VO,TO,BO,DAO,POJO)解释 action包 顾名思义请求,主要是和view 即我们所说的视图就是页面打交道,action类 是 操作方法,对于页 面Form 表单的操 ...
- java的几种对象(PO,VO,DAO,BO,POJO)解释
本文转自: http://blog.csdn.net/bzhxuexi/article/details/8227808 Java的几种对象(PO,VO,DAO,BO,POJO)解释 一.PO:pe ...
- java的几种对象(PO,VO,DAO,BO,POJO)解释(转)
[ 作者:赵小刀 ][ 大小:1k ][ 发布日期:2005-08-22 ][ 浏览:8678 ] java的几种对象(PO,VO,DAO,BO,POJO)解释 一.PO:pe ...
- 分层领域模型规约与领域模型命名规约
一.分层领域模型规约 DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象. DTO(Data Transfer Object):数据传输对象,Service或Man ...
最新文章
- 梯度下降法 —— 经典的优化方法
- Java方向如何准备BAT技术面试答案
- 科大星云诗社动态20210207
- SAP Cloud for Customer的跳转链接制作navigation link
- LeetCode 1444. 切披萨的方案数(DP)
- js 取得数组下标_剖析JS和Redis的数据结构设计:数组
- 使用.pk8 和.pem签名生成.keystore 签名
- 物联网:Android端控制ZigBee实现生产环境自动控制
- Delphi 制作股票分时图
- P5706 【深基2.例8】再分肥宅水
- GO语言-panic和recover
- C语言猜数字游戏及关机程序
- 超分辨率技术:Adobe Photoshop与深度神经网络对比
- js字符串首字母大写其他小写
- iphone开发中内存利用说明
- LintCode(M) 乱序字符串
- 朱善利《微观经济学》第3版课后习题答案
- IPsec中IKE与ISAKMP过程分析(快速模式-消息2)
- 使用FileZilla等软件搭建ftp服务器
- ie8视频播放器兼容
热门文章
- window.Event参数详解
- CodeForces - 1459C Row GCD(数论+推公式)
- POJ - 3694 Network(边双缩点+LCA+并查集优化)
- HDU - 4821 String(字符串哈希+优化)
- linux 提交git,linux下git使用记录1 git 提交
- 微信小程序- 初试小程序之tabbar(选项卡,底部导航)的使用
- 使用docker构建并测试一个基于Sinatra的Web应用程序
- 伯努利数与自然数幂和
- 没登录网页也能个性化推荐?一文详解浏览器指纹
- AWS 用户指南笔记