Skip to content

POJO、DTO、DAO、PO、BO、VO、QO、Entity 详解

1 POJO(Plain Ordinary Java Object,简单Java对象)

这是一个普通的 Java 对象,通常用于表示数据实体,它通常包含私有字段和公共的 getter 和 setter 方法,但没有业务逻辑。POJO 主要用于将数据存储和传输到不同层次或组件中,如数据库、前端 UI 等。

POJO 的内在含义是指:那些没有继承任何类、也没有实现任何接口,更没有被其它框架侵入的 Java 对象。 它仅包含自身的属性以及自身属性的 getter 和 setter 方法,这意味者 POJO 可以方便的从一个框架迁移到另一个框架中,或者框架升级也会对代码毫无影响,因此而得到复用。

一般情况下,当需要持久化对象时,开发者喜欢将该对象放在名为 xxxPOJO 的目录中。当然,不建议这样命名。 POJO 实际上是包括 BO/VO/PO/DO 等一系列对象的总称。有的团队规定禁止命名成 xxxPOJO。

2 PO(Persistence Object,持久层对象)

PO 通常指持久化对象,是与数据库表或其他数据存储中的实体相对应的 Java 对象。它包含数据字段的映射以及用于数据库交互的方法。

PO 是在 ORM(对象关系映射)中与数据表的一条记录相匹配,自身属性与数据表字段一一对应。可以将数据表中的一条记录作为一个对象处理,并可以转化为其它对象。 面对不同的数据源时,比如文档型数据库,对象型数据库等时,顾名思义PO是DAO层为进行持久化操作而准备的对象。

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

DAO 是一种用于封装对数据库或其他数据存储的访问的对象。它通常包含 CRUD(创建、读取、更新、删除)操作,以便在应用程序中对数据进行持久化和检索。

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

DTO 是一种用于在不同层次之间传输数据的对象。它通常用于封装一组数据,以便在不同组件或服务之间传递数据,减少数据传输时的复杂性。DTO 通常不包含业务逻辑。

5 Entity(实体)

Entity 通常指实体,是与数据库表中的记录一一对应的 Java 对象。它包含数据字段的映射以及用于数据库交互的方法,通常与数据库的表结构紧密关联。

6 VO(View Object,显示层对象)

View Object 的含义是通常是 Web 向模板渲染引擎层传输的对象。《阿里巴巴开发手册》中建议把输出的显示层对象命名为 VO。当然,也有人把这个对象命名为 DTO 作为传输。

8 BO(Business Object,业务对象)

BO 是用于表示应用程序的业务逻辑的对象。它通常包含与业务相关的方法和规则。

9 QO(Query Object,查询对象)

QO 通常用于封装查询条件,以便将它们传递给数据访问层或服务以执行查询操作。它可以包含过滤条件、排序规则等信息。

11 总结

这些术语通常在不同层次的应用程序中使用,例如:

  • POJO 和 DTO 用于数据传输和数据封装。
  • DAO 和 ENTITY 用于数据访问和持久化。
  • BO 和 VO 用于封装业务逻辑和不可变数据。
  • QO 用于封装查询条件。

各对象的命名习惯:

  • PO 通常放在名为 bean、entity、model 目录中。
  • DAO 本身就是一层,通常是 dao、mapper、repository 目录。
  • BO 通常在 service、manager、business,domain,model 目录中。
  • DTO 通常在 command、representation、dto 目录中。
编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!