PO VO DTO POJO的概念

PO VO DTO POJO

PO (Persistent Object):持久化对象,通常是表示一个实体对象,与底层数据库表的结构一一对应。PO包含了与数据库存储相关的属性和方法,一般用于ORM(对象关系映射)过程中,用于映射数据库表的行。PO通常与数据库交互,并包含了持久化操作(例如增删改查)的方法。PO的设计目标是将数据库表结构映射到对象模型中,便于进行数据库操作和持久化,通常也称作DO(Data Object)


VO (Value Object):值对象,也称为数据传输对象(Data Transfer Object),用于封装一组相关的数据并提供访问和操作这些数据的方法。VO通常是不可变的,即一旦创建,其内部状态不可修改。VO主要用于数据传递和封装,通常用于表示业务领域中的实体或数据的聚合。VO的设计目标是提供一个简单的数据容器,用于在不同层或模块之间进行数据传递,以减少耦合性。


DTO (Data Transfer Object):数据传输对象,用于封装和传输数据的对象。DTO通常用于不同服务之间或网络传输中,用于将数据从一个系统传递到另一个系统。DTO主要用于数据传输和跨系统的数据交互,不包含业务逻辑。DTO的设计目标是方便数据的传输和解耦不同系统之间的数据交互。通常DTO会根据不同的需求和场景进行定制,只包含需要传输的数据。


POJO (Plain Old Java Object) 是一个简单的Java对象,它是一种在Java开发中常见的设计模式。POJO没有继承特定的类或实现特定的接口,也没有使用特定的框架或注解。

POJO的特点包括:

  1. 简单:POJO是一个普通的Java类,不依赖于特定的框架或库,没有复杂的继承关系或注解配置。
  2. 可重用:POJO可以在不同的应用程序或模块中重用,因为它们不会依赖于特定的上下文或环境。
  3. 可扩展:POJO可以根据需要进行扩展或修改,因为它们没有约束性的限制。

POJO通常用于表示业务领域中的实体或数据,它们用于封装和处理数据,不包含业务逻辑。POJO的设计目标是提供一个简单、可重用和可扩展的Java对象,用于在应用程序的不同层之间传递数据。

POJO的概念不仅仅适用于Java,它也可以应用于其他编程语言,表示普通的对象或数据结构。

转化示例

  • Controller层:public List getUsers(UserQuery userQuery)。此层常见的转换为:DTO转VO
    • Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传输。
  • Service/Manager层:List getUsers(UserQuery userQuery)。然后在Service内部使用UserBO封装中间所需的逻辑对象,此层常见的转换为:PO转DTO,或PO转BO转DTO
  • DAO层:List getUsers(UserQuery userQuery);

VO/DTO的区别

VO (View Object) 和 DTO (Data Transfer Object) 是在软件开发中常用的概念,用于处理数据传输和展示的对象。它们有以下区别:

  1. 用途不同:
    • DTO主要用于在各个层之间传输数据,尤其是在应用程序的不同服务之间传递数据。它们通常用于解耦不同服务之间的数据传输,以减少网络通信的开销。
    • VO主要用于前端展示,封装了前端页面所需的数据。VO通常与前端页面的展示逻辑紧密相关,包含一些额外的计算属性、格式化数据等。
  2. 数据内容不同:
    • DTO通常会包含更多的数据,用于在不同服务之间传递业务数据。DTO可以封装多个实体对象,以满足不同服务的需求,避免频繁的网络通信。
    • VO通常只包含前端页面所需的数据,并且可能会对数据进行一些封装或处理,以适应前端展示的需求。
  3. 依赖关系不同:
    • DTO通常是面向服务之间的数据传输,因此可能会依赖于服务层的业务实体对象。
    • VO通常是面向前端页面的展示,因此可能会依赖于服务层的业务实体对象或DTO。
  4. 可变性不同:
    • DTO通常是可变的,因为它们用于传输业务数据,可能需要在不同服务之间进行修改。
    • VO通常是不可变的,因为它们用于前端展示,一旦创建后就不会再进行修改。

总的来说,DTO主要用于不同服务之间传输数据,而VO主要用于前端展示。DTO通常包含更多的数据,而VO包含适应前端展示需求的数据。在实际应用中,可以根据需求和业务逻辑的复杂性来选择使用DTO或VO。


总结:

  • VO主要用于封装和传递业务对象或数据的聚合,强调数据的不可变性和封装性。
  • PO主要用于数据库对象和数据持久化,与数据库表结构一一对应,包含与数据库操作相关的方法。
  • DTO主要用于数据传输和跨系统的数据交互,不包含业务逻辑,通常根据需求和场景进行定制。

你可能感兴趣的:(知识点补充,oracle,数据库,mysql,spring,boot,maven,java)