【Java】解释一下什么是PO BO VO DTO POJO DAO DO

PO、BO、VO、DTO、POJO、DAO、DO 是在软件开发,尤其是基于 Java 的企业级应用开发中经常使用的对象模型设计概念。这些术语有助于组织代码、分离关注点以及实现不同层次间的职责分工。以下是它们各自的含义和用途:

PO (Persistent Object) - 持久化对象

  • PO 代表与数据库表结构直接对应的实体对象,通常包含表中字段对应的属性以及相关的 getter 和 setter 方法,如常用的User类就是一个PO。
  • 它主要用在数据访问层(DAO 层),用于封装从数据库读取的数据或准备写入数据库的数据。
  • PO 不包含任何业务逻辑,仅作为数据载体,其属性通常与数据库字段一一对应,用于 ORM(对象关系映射)框架(如 Hibernate、MyBatis 等)进行数据库操作。

BO (Business Object) - 业务对象

  • BO 负责封装业务逻辑,它可以包含多个 PO 或其他辅助对象,以实现特定业务功能或流程。
  • BO 通常位于业务层(Service 层),它对业务规则、验证、计算等进行抽象,并对外提供统一的接口供上层调用。
  • BO 有助于将复杂的业务逻辑与数据访问细节隔离,提高代码的可维护性和复用性。

VO (Value Object / View Object) - 值对象 / 表现层对象

  • VO 用于在表现层(如 Web 页面、移动端界面)与服务层之间传递数据,通常只包含前端展示所需的数据和属性。
  • VO 可能会忽略或简化一些数据库中的字段,也可能包含额外的计算结果或视图特定的状态信息,以适应前端展示的需求。
  • VO 旨在减少传输数据量,保护敏感信息(如数据库结构),并简化前端对数据的处理。

DTO (Data Transfer Object) - 数据传输对象

  • DTO 与 VO 类似,用于在不同服务之间或者服务与客户端之间传递数据,尤其是在远程调用、Web 服务接口等场景下。
  • DTO 专注于数据的序列化与反序列化,通常包含数据验证逻辑以确保数据完整性和一致性。
  • 相比 VO,DTO 更强调跨系统的数据交互,可能需要遵循特定的接口协议或数据格式标准。

POJO (Plain Old Java Object) - 简单普通 Java 对象

  • POJO 是一个通用概念,指的是那些符合 Java Bean 规范(具有无参构造函数、getter/setter 方法等)、没有继承特定框架类、未实现特定接口的简单对象。
  • POJO 不依赖于任何特定的框架或技术,可以是 PO、VO、DTO 等任何符合上述定义的简单对象。
  • 强调 POJO 的理念是为了提倡轻量级、无侵入式的编程风格,避免过度依赖框架,保持代码的纯净和易测试性。

DAO (Data Access Object) - 数据访问对象

  • DAO 是一个设计模式,用于封装底层数据访问逻辑,如 SQL 查询、数据库连接管理等。
  • DAO 提供一组面向业务对象的操作接口(如 CRUD),隐藏具体的数据库访问细节,使得业务逻辑层与数据访问层解耦。
  • 实现中通常会与 ORM 框架结合,使用 PO 进行数据的持久化操作,如Mybatis的Mapper就是DAO。

DO (Data Object) - 数据对象

  • DO 也是与数据库表结构相对应的实体对象,类似于 PO,用于表示数据库中的一个表或者视图的数据。
  • DO 主要关注数据本身,不含业务逻辑,通常用于数据模型层,与 PO 在概念上可能重叠或等同使用。

综上,我们可以使用一个例子更好的了解上面对象的关系。比如,服务端的 Controller 接收客户端传过来的 DTO(数据传输对象),Controller 内部可能需要创建 BO(Service业务对象) 进行业务处理,同时业务处理可能需要通过 DAO (Mapper/Repository) 与 DAOImpl 对数据库进行操作(对数据库的业务处理),与数据库进行操作需要 POJO/PO (持久化对象) 对数据表进行映射,最后整个业务处理完后会响应 VO(视图) 给客户端。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值