PO、VO、DAO、BO、DTO、POJO 能分清吗?

2023-11-04

在这里插入图片描述

一、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之类的方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PO、VO、DAO、BO、DTO、POJO 能分清吗? 的相关文章

随机推荐

  • C/C++安全编程规范

    一 安全编程概述 1 安全编程的目的 安全编程是一种软件开发方法 目的是通过采取具体措施来减少程序中存在的安全漏洞和黑客攻击的可能性 确保软件在运行过程中不会遭受攻击或泄露敏感信息 2 在进行安全编程时 需要遵循的安全最佳实践和规范 2 1
  • Rocketmq-- RocketMQ4.X基础介绍

    一 阿里开源消息队列 RocketMQ4 x介绍和新概念讲解 Apache RocketMQ作为阿里开源的一款高性能 高吞吐量的分布式消息中间件 1 1 特点 支持Broker和Consumer端消息过滤 支持发布订阅模型 和点对点 支持拉
  • Excel Row函数和Rows函数的使用方法,含Row(A:A)与Row(1:1)实例

    在 Excel 中 Row函数用于返回单元格的行号 Rows函数用于返回数组或引用单元格的行数 如果Row函数省略参数 默认返回公式所在单元格的行号 Rows函数不能省略参数 Rows函数常与Indirect函数 Index函数 If函数
  • 20230314-近视的小张

    1 题目名称 近视的小张 时间限制 1000ms内存限制 256M 题目描述 小张和他的 M 个朋友来到了一个十分神奇的地方 在这里有 N 个 柱子 对于每个 1 lt i lt N 第 i 个柱子都有两个属性 H i P i H i 表示
  • tasklet与workqueue的区别及底层实现区别

    softirq和tasklet都属于软中断 tasklet是softirq的特殊实现 workqueue是普通的工作队列 1 softirq 软中断支持SMP 同一个softirq可以在不同的CPU上同时运行 softirq必须是可重入的
  • Zabbix 如何动态执行监控采集脚本

    在使用Zabbix自定义脚本采集监控数据的时候 通常会遇到以下一些问题 服务器扩容之后 监控脚本如何部署到新的服务器上 监控脚本需要修改时 如何自动修改所有相同的监控脚本 如何备份监控采集脚本避免因服务器异常后丢失 新部署自定义监控 如何避
  • 能通过一张照片(2D)得到3D的模型吗?

    如下内容已经整理成 PDF 很好奇其实如果将人眼所看到的画面保存下来 拍照 人类是可以感知照片内的各个物体 是不是可以理解成这是一种2D到3D认知的转换 作者 知乎用户 链接 https www zhihu com question 529
  • win7蓝屏报错:STOP:0x0000007E

    报错环境 win 7 报错信息 STOP 0x0000007E 解决办法 0X0000007E代码的意思是电脑中病毒了或是电脑内存条出现了问题 电脑中病毒问题怎么处理 2 1如果是电脑中病毒 开机按电脑上的F8键 在电脑开机菜单栏找到 安全
  • 经典网络LeNet-5介绍及代码测试(Caffe, MNIST, C++)

    LeNet 5 包含7个层 layer 如下图所示 输入层没有计算在内 输入图像大小为32 32 1 是针对灰度图进行训练和预测的 论文名字为 Gradient Based Learning Applied to Document Reco
  • 为什么街头篮球总提示服务器维护,我玩街头篮球,但这几天它总是说连接不上服务器怎么回事?...

    我玩街头篮球 但这几天它总是说连接不上服务器怎么回事 來源 互聯網 2010 04 26 07 19 32 評論 分類 遊戲 gt gt 網絡遊戲 gt gt 街頭籃球 問題描述 我下载了补丁 參考答案 无法连接服务器 情况屡见不鲜 不巧
  • 如何应急响应

    应急响应事件分类 大致可以分为三类 1 勒索病毒 勒索病毒危害不言而喻 一旦中了勒索病毒 几乎很难破解 只能通过重装系统 数据备份恢复或者缴纳相应被勒索的比特币支付进行病毒解除 仍有一种比较渺茫的方式进行病毒解除 那就是溯源到攻击者 通过法
  • Expanding Low-Density Latent Regions for Open-Set Object Detection

    Expanding Low Density Latent Regions for Open Set Object Detection CVPR2022 Code https github com csuhan opendet2 这篇文章认为
  • 【Spring八】Spring与Hibernate整合

    Hibernate所需元素 三要素 实体类 hbm xml hibernate cfg xml Spring所需元素 applicationContext xml hibernate在操作数据库时 使用sessionFactory open
  • 华为OD机试 - 绘图机器(Java)

    题目描述 绘图机器的绘图笔初始位置在原点 0 0 机器启动后按照以下规则来进行绘制直线 1 尝试沿着横线坐标正向绘制直线直到给定的终点E 2 期间可以通过指令在纵坐标轴方向进行偏移 offsetY为正数表示正向偏移 为负数表示负向偏移 给定
  • 第一章 指针仪表识别之仪表检测

    文章目录 一 基于Hough变换的仪表检测 附源码 二 基于SURF模板匹配仪表检测 附源码 三 基于YOLO深度学习的仪表检测 附源码 指针式仪表读数算法主要用于工业变电站环境 变电站环境复杂 仪表类型众多 仪表图像通过巡检机器人的可见光
  • jdk17.0.6的安装配置

    下载资源 官网下载 Java Archive Downloads Java SE 17 oracle com https www oracle com java technologies javase jdk17 archive downl
  • Cuda Streams的概述(一)-- Cuda介绍

    最近在做有关Cuda的一个项目 碰到匪夷所思的问题 在异步的时候发现并没有达到预期的效果 程序没有异步起来 然后在网上找了一个Nvida的有关Cuda Streams的一个ppt 然后照着里面的提示 使程序达到了异步的效果 首先 先回顾一下
  • linux VLAN配置(vconfig)

    1 安装vlan vconfig 和加载8021q模块 aptitude install vlan modprobe 8021q 或 yum install vconfig modprobe 8021q lsmod grep i 8021q
  • AndroidStudio编译构建报错 Task ‘wrapper‘ not found in project ‘:xxx‘

    在项目 app 中找不到的任务 包装器 Task wrapper not found in project xxx 的问题 原因 build gradle 文件没有包装器任务 解决步骤 将此代码添加到 build gradle task w
  • PO、VO、DAO、BO、DTO、POJO 能分清吗?

    一 PO persistant object 持久对象 可以看成是与数据库中的表相映射的java对象 使用Hibernate来生成PO是不错的选择 二 VO value object 值对象 通常用于业务层之间的数据传递 和PO一样也是仅仅