深入解析VO、PO、DTO:业务层数据传递与持久化对象的差异

2024-12-05 18:13:07

值:值对象

通常用于业务层之间的数据传输,由new创建,由GC回收。

采购订单

:持久层对象

对应数据库中表的字段。

VO和PO都是属性加上属性的get和set方法;表面上看起来没有什么不同,但含义却完全不同。

数据传输组织

data:数据传输对象。

表中有十多个字段:id、name、(男/女)、age、(如001)...

页面需要显示四个字段:姓名、(男/女)、年龄、(如今日头条有限公司)。

DTO由此生成。一是可以提高数据传输的速度(减少传输字段数),二是可以隐藏后端表结构。

daocoffee_DAO_daogrs

:业务对象

BO将业务逻辑封装到一个对象中。

我理解它是 PO 的组合。例如,投保人是PO,被保险人是PO,保险类型信息是PO等,它们的组合就是第一个保单的BO。

波乔

“Plain Java”,简单普通的java对象。主要用来指代不遵循特定Java对象模型、约定或框架的对象。

它不继承任何类,不实现任何接口,不存在其他框架侵入的java对象。

传统意义上的纯Java对象,最基本的Java Bean只有属性加上属性的get和set方法。 (其中往往封装了一些简单的逻辑)

可转换为PO、DTO、VO;例如POJO在传输过程中就是DTO。

daocoffee_DAO_daogrs

它是用JAVA语言编写的可重用组件。符合一定规范编写的Java类不是一种技术,而是一种规范。基于这个规范,我们总结了很多开发技巧和工具功能。符合此规范的类可以被其他程序员或框架使用。其方法命名、构造和行为必须符合特定约定:

所有属性都是。

此类必须有一个公共默认构造函数。也就是提供一个无参构造函数。

使用 和 访问此类的属性,其他方法遵循标准命名约定。

这个类应该是可序列化的。实现接口。

由于这些要求主要依赖于约定而不是实现接口,因此许多开发人员将 POJO 视为遵守特定的命名约定。

POJO 和 Bean 有什么区别?

POJO实际上是一个更简单、更纯粹的类或接口。 POJO严格遵循简单对象的概念,有的常常封装一些简单的逻辑。

POJO主要用于数据的临时传输。它只能加载数据,作为数据存储的载体,但不具备处理业务逻辑的能力。

虽然数据获取和POJO一样,但是还可以有其他方法。

波乔:

 

public class BasicInfoVo {
private String orderId;
private Integer uid;
public String getOrderId() {
return orderId;}
public void setOrderId(String orderId) {
this.orderId = orderId;}
public Integer getUid() {
return uid;}
public void setUid(Integer uid) {
this.uid = uid;
}}

豆子:

 

public class UserInfo implements java.io.Serializable{
//实现serializable接口。
private static final long serialVersionUID = 1L;
private String name;
private int age;
//无参构造器
public UserInfo() {
}
public String getName() {
return name; }
public void setName(String name) {
this.name = name; }
public int getAge() {
return age; }
public void setAge(int age) {
this.age = age; }
//javabean当中可以有其它的方法
public void userInfoPrint(){
System.out.println("");
} }

DAO

data:数据访问对象

它主要用于封装对数据的访问。注意,是访问数据,而不是访问数据库。

daogrs_daocoffee_DAO

实体 bean 通常用于 ORM 对象关系映射。实体映射到表中,一般没有业务逻辑代码。

负责将数据库中的表记录映射到内存中的对象。事实上,创建一个对象就相当于创建一条记录。删除一个对象会同时从数据库中删除相应的记录。当修改一个Bean时,容器会自动改变该Bean的状态。与数据库同步。

标签: DAO
首页
欧意注册
欧意下载
联系