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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

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

   二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。

   三、DAO:data access object 数据访问对象,此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。

   四、BO:business object 业务对象,封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。

   五、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

 

转自:http://blog.sina.com.cn/s/blog_6ec332aa0100yebr.html

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

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

相关文章

【随想】每日两题Day.22

题目:102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[…

帮助子女成功的十大路径

美国全国家长协会(National PTA)建议指出:作为家长您对你子女的成功起着非常重要的影响作用,并举出帮助子女成功的十种路径。 1、与子女沟通 如果我们尽早地与子女沟通,提供给他们信息与行为准则,获得子女的信任,在…

shell关闭指定进程

例如要关闭jupyter-notebook这个进程: ps -ef | grep jupyter-notebook | grep -v grep | cut -c 9-15 | xargs kill -9 说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。 “ps -ef” 查看所有进程  …

垃圾回收算法与垃圾回收器

Java与C等语言最大的技术区别:自动化的垃圾回收机制(GC) 为什么要了解GC和内存分配策略 1、面试需要 2、GC对应用的性能是有影响的; 3、写代码有好处 栈:栈中的生命周期是跟随线程,所以一般不需要关注 堆&a…

提高孩子睡眠质量 学业事半功倍

睡眠如同大脑的食物。在睡眠期间,许多重要的身体机能静静地发生著作用。省略睡眠是有害的,如果一个严重缺觉的人开着车,他会脸色苍白、喜怒无常、反应迟钝,可能是致命的危险。缺少睡眠让青少年很难与人相处,学业表现不…

实体类(VO,DO,DTO)的划分

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 从领域建模中的实体划分、项目中的实际应用情况两个角度,对这几个概念进行简析。 得出的主要结论是:在项目应用…

IIS新建站点服务器,localhost能登录但是IP访问登录不了。

IIS服务器新建站点之后,浏览页面,服务器本地是可以登录,但是localhost换成IP就无法访问。其他站点IP却可以访问。 1.如果浏览直接失败,说明端口号需要更换。 2.如果出现IP不能访问,localhost能访问,需要在高…

eclipse问题_Alt+/不给提示,只补充代码问题的解决方案

今天用eclipse敲代码的时候遇到的问题 我还以为是冲突什么的 还重新装了软件 最后才发现原来是快捷键设置的问题 解决方案: 1:打开菜单window→Preferences,然后在窗口的左侧树选择General->Keys 2:在下图中的5框的地方输入“w…

领域驱动设计:浅析 VO、DTO、DO、PO 概念、区别、用处

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和PO。 由于不同的项目和开发人员有不同的命名习惯&#xff0c…

动脑的生活教育

心理学家华生曾经说过:“如果给我一打孩子,我可以把他们变成律师、医师、科学家,或是强盗、土匪。”华生认为,教育孩子就如同马戏团的驯兽师训练野兽一样,是“刺激”与“反应”的联结,不需要任何的“思考”…

前端知识点回顾之重点篇——CORS

CORS(cross origin resource sharing)跨域资源共享 来源:http://www.ruanyifeng.com/blog/2016/04/cors.html 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 简介 CORS需要浏览…

案例:隐秘而低调的内存泄露(OOM)

内存泄露测试的整个过程如下:在手机里启动被测APP并打开DDMS。在DDMS中选中【com.example.android.hcgallery】之后单击按钮【show heap updates】,然后切换到标签页【VM Heap】,再单击按钮【Cause GC】。不断操作APP,并观察Heap。…

员工价值——如何体现自己价值,如何被自己的领导认可

到公司工作快三年了,比我后来的同事陆续得到了升职的机会,我却原地不动,心里颇不是滋味。终于有一天,冒着被解聘的危险,我找到老板理论。 “老板,我有过迟到、早退或乱章违纪的现象吗?”我问。 …

java: PO,VO,TO,BO,DAO,POJO 解释

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑…

[译]JavaScript 究竟是如何工作的?(第一部分)

原文地址:How Does JavaScript Really Work? (Part 1)原文作者:Priyesh Patel如果你是一个 JS 开发者或者是正在学习这门语言的学生,很大概率上你会遇到双字母词"V8"。在这篇文章中,我将会为你简述不同的 JS 引擎并深入…

vue实战(9):总结二

整理前一段所做的工作内容 0.其它 vue实战(1):准备与资料整理vue实战(2):初始化项目、搭建底部导航路由vue实战(3):底部导航显示、搭建各模块静态页面、添加登录页页面与…

一名IT从业者的英语口语能力成长路径

这篇文章是我最近十天口语系列文章的合辑,文章比较长,一万五千余字。但是系统化地归纳了自己十多年的英语尤其是口语方面的学习经历与总结思考。我不是个纯粹的英语专业学生,我甚至不是任何英语相关专业的学生,但是我和英语却有着…

解决:SpringBoot 错误:Caused by: org.yaml.snakeyaml.scanner.ScannerException

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 错误: Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next tokenfound character that cannot s…

好程序员前端分享使用JS开发简单的音乐播放器

好程序员前端分享使用JS开发简单的音乐播放器,最近,我们在教学生使用JavaScript,今天就带大家开发一款简单的音乐播放器。首先,最终效果如图所示:首先,我们来编写html界面index.html,代码如下:&…

学生管理系统stuSystem函数

void stuSystem(){ struct student *head,*stu; int lookup_num; int Delete_num; int Modify_num; char ckeya; int istate0; do { system("cls"); //vc清屏函数&#xff0c;包含在#include<stdlib.h>中 printf(" 欢迎进入学生管理系统&#xff01;\n&q…