Yufelix's Blog

Yufelix

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

13
2021-06-24

在Java开发中,我们经常会遇到PO、VO、DAO、BO、DTO、POJO这些缩写词。它们看起来很像,但各自有不同的职责和用途。今天我们就来聊聊这些“O”们,帮你理清它们的区别。

1. PO(Persistent Object):持久对象

PO 是跟数据库表直接打交道的对象。每个PO对象通常对应数据库中的一张表,表中的每个字段就是PO对象的属性。简单来说,PO就是数据库表的“代言人”。

  • 用途:主要用于数据层,直接与数据库交互。
  • 特点:与数据库表结构一一对应。

2. VO(Value Object):值对象

VO 是用来传递数据的对象,通常用于业务层之间的数据传递。VO可以包含多个PO的数据,也可以只包含部分数据。它的主要任务是“搬运”数据。

  • 用途:用于业务逻辑层和表示层之间的数据传输。
  • 特点:抽象出的业务对象,可能与表对应,也可能不对应。

3. DAO(Data Access Object):数据访问对象

DAO 是数据访问对象的接口,负责与数据库打交道。它就像是业务逻辑和数据库之间的“桥梁”,帮助业务逻辑层从数据库中获取数据。

  • 用途:封装对数据库的访问操作,提供增删改查等接口。
  • 特点:通常包含DAO接口、DAO实现类和数据传输对象(DTO)。

4. BO(Business Object):业务对象

BO 是业务对象,它封装了业务逻辑。BO可以包含多个PO或DTO,处理复杂的业务逻辑。简单来说,BO就是业务逻辑的“指挥官”。

  • 用途:封装业务逻辑,处理复杂的业务操作。
  • 特点:包含业务逻辑,可能涉及多个PO或DTO。

5. DTO(Data Transfer Object):数据传输对象

DTO 是数据传输对象,主要用于远程调用或大量数据传输的场景。DTO通常只包含需要传输的数据,避免传输不必要的信息。

  • 用途:用于远程调用或大量数据传输,减少网络开销。
  • 特点:只包含需要传输的数据,避免暴露数据库表结构。

6. POJO(Plain Old Java Object):简单的Java对象

POJO 是普通的Java对象,没有复杂的框架依赖。它可以作为VO、DTO、BO等使用,但通常不包含业务逻辑或数据库访问代码。

  • 用途:作为简单的Java对象,用于各种场景。
  • 特点:不依赖特定框架,只包含属性和getter/setter方法。

总结

  • PO:数据库表的“代言人”,与表结构一一对应。
  • VO:数据搬运工,用于业务层之间的数据传输。
  • DAO:数据库的“桥梁”,负责数据访问操作。
  • BO:业务逻辑的“指挥官”,处理复杂的业务逻辑。
  • DTO:数据传输的“快递员”,用于远程调用或大量数据传输。
  • POJO:普通的Java对象,简单、灵活,适用于多种场景。

希望通过这篇文章,你能更好地理解这些“O”们的区别和用途。下次再看到它们时,就不会再傻傻分不清啦!