Java基础之数据载体定义及场景

简介: Java开发中,对象按角色分为:PO(持久化对象,对应数据库表),DTO(数据传输对象,跨层传输数据),VO(值对象,用于页面展示),RO(资源对象,如文件连接)。此外,还有Entity(ORM实体),BO(业务对象),DAO(数据访问对象),SO(服务对象),FO(外观对象),AO(应用对象),EO(实体对象)和TO(传输对象),它们在不同场景下负责不同的职责,促进代码组织和解耦。

Java基础之数据载体定义及场景
Java是一门面向对象语言,万物皆是对象(Object)。
前面我们学会了Java的POJO类,知道了Java通过定义类就可以映射现实事物的数据模型,通过实例化对象就可以表现出完整的事物。
今天我们看下在不同的场景下,这些类都是怎么称呼和定义的。
在日常业务开发中,大致分为以下场景:
数据存储到数据库,也叫持久化入库,这种的类叫PO(Persistent Object),在ORM框架中也叫Entity实体类。
数据传输,从这里传到那里,这种叫DTO(Data Transfer Object)。
页面展示数据,比如网页里显示一个简历信息,这种叫VO(Value Object)。
表示资源,比如文件、图片、网络连接、数据库连接、配置等等,叫RO(Resource Object)。
简单了解下就行了,有那种傻不拉几的面试管会问这个,有时候领导或者同事装逼的时候也会专门区分这个。
其实你就叫它类就行,比如入参建了个DTO,你就说建了个DTO,把参数全部封装到了类里。
比如数据库表映射,你就说建了个实体类,映射了表字段,谁要是纠正你说这个是PO吧,你就翻它白眼。
不过有时候规范的话,起类名的时候会需要标注出来,比如接口入参叫 UserDTO,数据库映射user表叫UserPO或User。
反正慢慢总要明白的,都无所吊谓。

下面列出了一些场景及定义:
  DTO(Data Transfer Object)
  DTO 是一个设计模式,用于在不同层之间传输数据。DTO 通常是一个简单的传输类,它包含了需要传输的数据和少量用于访问这些数据的 getter 和 setter 方法。DTO 的主要目的是将数据从客户端传输到服务器,或将数据从服务器的业务逻辑层传输到持久层。

  VO(Value Object)
  VO 是一种表示应用程序数据的对象,它通常包含了不包含业务逻辑的数据。VO 的主要目的是在应用程序的不同部分之间传递数据。VO 可以是一个简单的 Java 对象,也可以是一个复杂的对象,包含了多个属性和其他 VO 对象。

  PO(Persistent Object)
  PO 是一种持久层对象,它通常用于表示数据库中的表。PO 的属性与数据库表的列相对应。PO 的主要目的是将数据库表的数据映射到对象。在 ORM(对象关系映射)框架中,如 Hibernate,PO 通常用来表示实体类。

  Entity
  Entity 通常指的是实体类,它是 ORM 框架中的一个概念。Entity 类是一个 POJO,它映射到数据库中的一个表。Entity 类的每个实例代表表中的一行数据。Entity 类通常使用注解或 XML 配置来定义其与数据库表之间的映射关系。

  BO(Business Object)
  BO 代表业务对象,它通常包含业务逻辑和数据。BO 旨在封装业务规则和业务数据,为应用程序提供处理业务操作的接口。BO 可以包含对 DTO、VO 或 PO 的操作,并将它们转换为业务领域所需要的形式。

  DAO(Data Access Object)
  DAO 代表数据访问对象,它是一种设计模式,用于实现对数据源的数据访问。DAO 的目的是将数据访问逻辑(如数据库操作)与业务逻辑分离。DAO 通常为每种数据源提供一组特定的操作方法,例如增加、删除、修改和查询等。

  SO(Service Object)
  SO 代表服务对象,它通常包含与应用程序业务逻辑相关的操作。SO 用来封装复杂的业务流程,并将这些流程暴露为简单的接口。SO 可以协调多个 BO、DAO 或其他服务对象来完成特定的业务任务。

  FO(Facade Object)
  FO 代表外观对象,它是一种设计模式,用于提供一个统一的接口,以便客户端可以访问子系统的一组接口。FO 用来简化客户端与子系统的交互,将复杂性隐藏在一个简单的接口后面。

  AO(Application Object)
  AO 代表应用程序对象,它是一个较宽泛的概念,可以指代任何在应用程序中使用的对象。AO 可以是 DTO、VO、BO、DAO 或其他任何用于表示应用程序数据和行为的对象。

  EO(Entity Object)
  EO 代表实体对象,它通常与数据库中的实体相对应。EO 用来表示具有持久化状态的对象,它们通常与 ORM 框架中的实体类相似。

  RO(Resource Object)
  RO 代表资源对象,它通常用于表示应用程序中的资源,例如文件、网络连接或数据库连接等。RO 用来封装对资源的操作,并提供管理资源生命周期的方法。

  TO(Transfer Object)
  TO 是传输对象的另一种称呼,它通常与 DTO 类似,用于在不同的层之间传输数据。TO 的目的是减少网络通信次数,通过一次性传输所有必要的数据来实现这一点。

  这些术语在Java应用程序设计中扮演着重要的角色,它们帮助开发者将应用程序划分为不同的层和组件,从而提高代码的可维护性和可重用性。理解这些概念有助于开发者更好地设计和实现复杂的企业级应用程序。
END
目录
相关文章
|
27天前
|
数据采集 监控 前端开发
JAVA公立医院绩效考核管理系统源码-对接HIS数据
在医院的工作和管理上,院领导需要对院内工作人员的工作情况进行了解、评价和监控。 下面将对医院绩效管理系统的HIS数据流程加以阐述。
25 1
JAVA公立医院绩效考核管理系统源码-对接HIS数据
|
8天前
|
Java 关系型数据库 数据库
实时计算 Flink版操作报错合集之拉取全量数据时,如何解决Checkpoint失败并且报错为 "java.lang.OutOfMemoryError: Java heap space"
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
16天前
|
存储 安全 算法
Java中的数据脱敏与隐私保护技术
Java中的数据脱敏与隐私保护技术
|
14天前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
29 1
|
21天前
|
存储 Java 数据库连接
Java中的数据持久化技术详解
Java中的数据持久化技术详解
|
24天前
|
前端开发 JavaScript Java
java常用数据判空、比较和类型转换
java 开发中我们经常会用到的数据判空、数据比较和不同数据之间的类型转换,尤其数据判空可以让我们避免经常会出现 NullPointerException 空指针异常报错。
28 4
|
28天前
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
18 1
|
6天前
|
分布式计算 Java 调度
MaxCompute产品使用合集之使用Tunnel Java SDK上传BINARY数据类型时,应该使用什么作为数据类字节
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
15天前
|
存储 安全 Java
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
16 0
|
15天前
|
安全 Java 调度
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
14 0