PO、VO、BO、DAO、DTO、POJO

2024-06-19 02:52
文章标签 po dao pojo vo bo dto

本文主要是介绍PO、VO、BO、DAO、DTO、POJO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PO、VO、BO、DAO、DTO关系图
img
DAO(Data Access Object)数据访问对象,数据访问:顾名思义就是与数据库打交道,它封装了与底层数据源(如数据库)的交互逻辑。为业务逻辑层(Service)提供数据服务接口,隐藏了底层数据源的细节和复杂性。

PO(persistant object )持久对象,可以看成是与数据库中的表相映射的java对象,完全符合Java Bean规范的纯Java对象,没有增加额外的属性和方法。持久对象是由数据库创建并管理的,其生命周期与数据库密切相关。

用途:PO通常用于与数据库进行交互,作为数据访问对象(DAO)层的数据模型。

BO(Business Object)业务对象,封装了与业务相关的数据和操作逻辑。包含了业务规则和业务逻辑的实现。可能包含多个PO或DTO的属性,以及处理这些属性的业务方法。

比如PO1 是交易记录,PO2 是登录记录、PO3 是商品浏览记录、PO4 是添加购物记录,BO 就是个人网站行为对象

用途:BO负责处理业务逻辑、数据校验和与DAO的交互等任务,确保数据的完整性和业务规则的正确性。

DTO(Data Transfer Object)数据传输对象,用于在系统的不同部分之间传输数据。DTO是一个简单的POJO(Plain Old Java Object),不包含任何业务逻辑。主要用于服务层(Service)和展示层(Controller)之间的数据传输。可以包含多个PO或VO的属性,根据具体业务场景进行定制。
比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,
如果用这个对象来对应界面显示,那此时它的身份就转为VO

VO(View/Value object)视图对象,通常用于业务层之间的数据传递,如从Controller层到Service层,通常是从PO中提取出来的一部分数据,用于展示和传递给前端界面。VO对象通常只包含属性和对应的getter和setter方法,用于存储和获取数据。和PO一样也是仅仅包含数据而已。

用途:VO作为数据传输的载体,简化了数据的传输和降低了层与层之间的耦合度。
可以和表对应,也可以不,这根据业务的需要。PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。

POJO(Plain Old Java Objects)简单的Java对象,就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来,
而且简称比较直接.其中有一些属性及其getter、setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.
当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法

这篇关于PO、VO、BO、DAO、DTO、POJO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073807

相关文章

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

Hibernate插入数据时,报错:org.springframework.dao.DataIntegrityViolationException: could not insert: [cn.itc

在用junit测试:插入数据时,报一下错误: 错误原因: package junit;import org.junit.Test;import cn.itcast.crm.container.ServiceProvinder;import cn.itcast.crm.dao.ISysUserDao;import cn.itcast.crm.domain.SysRole;

DTO类实现Serializable接口的重要性

所谓序列化,简单一点理解,就是将对象转换成字节数组,反序列化是将字节数组恢复为对象。凡是要在网络上传输的对象、要写入文件的对象、要保存到数据库中的对象都要进行序列化。Java对象是无法直接保存到文件中,或是存入数据库中的。如果要保存到文件中,或是存入数据库中,就要将对象序列化,即转换为字节数组才能保存到文件中或是数据库中。文件或者数据库中的字节数组拿出来之后要转换为对象才能被我们识别,即反序列化。

hibernate泛型Dao,让持久层简洁起来

【前言】hibernate作为持久层ORM技术,它对JDBC进行非常轻量级对象封装,使得我们可以随心所欲的使用面向对象的思想来操作数据库。同时,作为后台开发的支撑,的确扮演了一个举足轻重的角色,那么我们在项目中如何灵活应用hibernate,也会给项目维护以及项目开发带来便利,下面我将展示我们项目中是如何来对hibernate进行应用和操作。 【目录】              -

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶斯算法优化X

设计之道:ORM、DAO、Service与三层架构的规范探索

引言: 实际开发中,遵守一定的开发规范,不仅可以提高开发效率,还可以提高项目的后续维护性以及项目的扩展性;了解一下本博客的项目设计规范,对项目开发很有意义 一、ORM思想 ORM(Object-Relational-Mapping)在对象模型和关系型模型之间做一个映射(转换)。 目的是为了解决面向对象编程语言的发展和关系型数据库的发展不匹配的问题 可以理解为: 将Java中的数据结

某PO手机市场竞争分析,巧用波特五力分析法找出核心竞争力!

某PO手机主要从事手机的生产与销售,最近推出了新款 Reno 系列 5G 手机。当前,苹果占据了高端市场,华为占据了中高端市场,而某 PO 手机则在剩余市场中与某 VO 和某米竞争。近年来,某 PO手机凭借中端 R 系列逐步取得市场份额。在这样的背景下,我们运用波特五力模型来分析某 PO 手机的外部环境。 1、波特五力模型案例分析:某PO手机 1.1 新进入者的威胁 由于电子产品市场竞争激烈

最佳MyBatis 根据表结构自动生成代码, domain, dao, mapper 文件

摘要: 接触mybatis时间不是很长, 但是感觉也还容易上手, 好处发现也很多, 觉得还挺方便, 这段时间又学习一下MyBatis自动生成代码. 觉得在效率上更好了, 所以分享一下自动生成代码的步骤. 首先, 看看我的项目的包结构, 用的IDEA13.1,gradle包管理工具, ...其他的就没什么可说的; 今天, 主要讲 generator 里面的东西; mysql的jar包是

selenium 自动化之七----自动化测试PO设计模式

PO(Page Object) 是selenium 自动化测试项目开发的设计模式之一,主要体现在页面交互的封装,使测试案例关注与业务而非页面谢姐,提高测试的可读性 PO 设计模式的有点 :减少代码重复,提高用例可读性,提供用例的维护性及UI频繁变化的项目 ,可以通过page对象封装一个HTML页面,可以通过提供的api来操作页面元素,不用满大街的四处找元素 PO的工作原理:就是一步一步封装分离

由“为什么VO不能继承PO?” 引出的为什么组合优于继承?

简述VO、DTO、PO的概念。 如下概念是我个人的理解: VO(View Object): 视图对象,用于展示,这很好理解,就是前端页面所需数据封装,一般所需要的属性比 PO 多并且。DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低