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

本文转自: http://blog.csdn.net/bzhxuexi/article/details/8227808


Java的几种对象(PO,VO,DAO,BO,POJO)解释  

  1.    一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
  2.    二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。
  3.    三、DAO:data access object 数据访问对象,此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。
  4.    四、BO:business object 业务对象,封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。
  5.    五、POJO:plain ordinary Java object 简单无规则java对象,我个人觉得它和其他不是一个层面上的东西,VO和PO应该都属于它.  

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
       总结下我认为一个对象究竟是什么O要看具体环境,在不同的层、不同的应用场合,对象的身份也不一样,而且对象身份的转化也是很自然的。就像你对老婆来说就是老公,对父母来说就是子女。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各种逻辑,让大家能更好的去用面向对象的方式处理问题.社会社会


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 的 4 大法宝,2018 必学中间件

转载自 Redis 的 4 大法宝,2018 必学中间件!Redis是什么?全称:REmote DIctionary ServerRedis是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、…

数据交换方法

数据交换方法 一.定义三方变量 【代码实现常用】 int a9; int b10;//定义第三方变量 int tempa; ab; btemp;System.out.println("a"a);//a10 System.out.println("b"b);//b9二.基本位运算(^) 概念: 参加运算的两个数据…

高级 Java 必须突破的 10 个知识点

转载自 高级 Java 必须突破的 10 个知识点! 工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级Java攻城狮需要突破哪些知识点呢…

java动态代理和cglib动态代理

本文转自: http://blog.csdn.net/leon709/article/details/9529307 动态代理应用广泛,spring,Struts等框架很多功能是通过动态代理,或者进一步封装来实现的。 常见的动态代理模式实现有Java API提供的动态代理和第三方开源类库CG…

排名前 16 的 Java 工具类

转载自 干货:排名前 16 的 Java 工具类!在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目…

匿名内部类与Lambda表达式习题

匿名内部类与Lambda表达式习题 1.写一个函数式接口 public Operation{ public int calc(int a,int b); } 在测试类中写一个method方法,参数为Operation和a,b public static void method(Operation op) int result op.calc(a,b); System.out.println(result); } 在…

MySQL 调优/优化的 101 个建议!

转载自 MySQL 调优/优化的 101 个建议! MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理…

CGLIB依赖ASM(关于java字节码框架ASM的学习)

本文转自: http://www.cnblogs.com/liuling/archive/2013/05/25/asm.html 一、什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动…

二分查找实现

二分查找实现 1.调用Arrays中的binarySearch方法即可实现 【使用前提:数组必须为升序排列】 public class Demo1 {public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//查找元素定为4int key 4;int index1 Arrays.binarySea…

Java程序员必须掌握的常用Linux命令

转载自 Java程序员必须掌握的常用Linux命令 Java程序员也是半个运维了,在日常开发中经常会接触到Linux环境操作。小公司的开发人员甚至是兼了全运维的工作,下面整理了一些常用的Linux操作命令。 Linux常用指令 ls   显示文件或目录-l 列…

分类器评价指标

转自:http://www.cnblogs.com/549294286/p/3621740.html; By the way, classic post like 分类指标准确率(Precision)和正确率(Accuracy)的区别 精度和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是…

冒泡排序、快排实现

排序实现 1.可调用Arrays.sort方法实现 public class Demo3 {public static void main(String[] args) {int []arr{3,5,2,1,4};Arrays.sort(arr);//可调用Arrays.toString方法打印数组System.out.println(Arrays.toString(arr));} }打印结果: -------------------…

ElasticJob-分布式作业调度神器,你们还在用Quartz吗

转载自 ElasticJob-分布式作业调度神器,你们还在用Quartz吗?! 简介 Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。 Elastic-Job-Lite定位为轻量级无中心化解…

分类器评估参数——准确度和精度的区别(足球荔枝)

refer to http://www.mathsisfun.com/accuracy-precision.html 准确率accuracy 和 精度precision 的不同: (1)Accuracy is how close a measured value is to the actual (true) value. 准确率是测量值与实际(真)值的…

JDK7的日期时间类

JDK7的日期时间类 Date类 1.概念 Date类表示时间,时间可以精确到毫秒。创建一个Date对象,其实就表示时间的对象 2.构造方法和成员方法 public class Demo1 {public static void main(String[] args) {//空参构造(将系统当前时间封装为时间对象[毫秒值…

Java 10的10个新特性,将彻底改变你写代码的方式

转载自 Java 10的10个新特性,将彻底改变你写代码的方式 Java 9才发布几个月,很多玩意都没整明白,现在Java 10又要来了。。 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不…

如何评估模型的预测性能?

you can refer to 如何评估模型的预测性能? 一、模型评估简介 http://www2.mccombs.utexas.edu/faculty/Maytal.Saar-Tsechansky/Teaching/MIS_373/Fall2004/Model Evaluation.ppt 二、评估数据 用于模型评估的数据和用于模型训练的数据最好是两套,否则用…

JDK8的日期时间类1

localDateTime类 1.分类 将时间分成 localDate类【年月日]】 localTime类【时分秒】 localDateTime类【年月日时分秒】 2.localDateTime类【常用】 (1)构造方法 public class Demo1 {public static void main(String[] args) {//localDateTime[天时分…

Spring Boot 2.0 正式发布

转载自 重磅:Spring Boot 2.0 正式发布! Spring Boot 2.0 正式发布! 2018/03/01最新消息,传得沸沸扬扬的Spring Boot 2.0 正式发布了。 小编去看了下Spring Boot的官网,正式版本已经释放出来了!&#xff01…

LNCS用户写作指南【 Springer Computer Science Proceedings 】

转自: http://blog.csdn.net/wyskys/article/details/18075471 重点是文末的参考文献格式(主要的是 链接, 期刊论文,会议论文的引用格式) 下載地址 :http://static.springer.com/sgw/documents/1121537/a…