<mark>PO</mark>:持久对象 (
persistent object
)就是在
Object/Relation Mapping
框架中的Entity
,
po
的<mark>每个属性基本上都对应数据库表里面的某个字段</mark>。
完全是一个符合Java Bean
规范的纯Java对象,<mark>没有增加别的属性和方法</mark>。
持久对象是由
insert
数据库创建,由数据库delete
删除的。
<mark>基本上持久对象生命周期和数据库密切相关</mark>。
@Data
@Repository
<mark>VO</mark>:值对象 (
Value Object
)通常用于<mark>业务层之间的数据传递</mark>,和
PO
一样也是仅仅包含数据而已。
但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。
@Data
表现层对象(View Object
)主要对应展示界面显示的数据对象,用一个VO对象来封装整个界面展示所需要的对象数据。
<mark>DAO</mark>: 数据访问对象是第一个面向对象的数据库接口,是一个数据访问接口(Data Access Object
)。它可以把
POJO
持久化为PO
,用PO
组装出来VO
、DTO
。
DAO
模式是标准的J2EE设计模式之一
.
开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开.
一个典型的DAO实现有下列几个组件:
- 一个DAO工厂类;
- 一个DAO接口;
- 一个实现DAO接口的具体类;
- 数据传递对象(有些时候叫做值对象).
.
<mark>具体的DAO类包含了从特定的数据源访问数据的逻辑,一般一个DAO类和一张表对应,每个操作要和事务关联</mark>。
@Mapper
<mark>BO</mark>:业务对象层的缩写(Business Object
)封装业务逻辑的
java
对象,通过调用DAO
方法,结合PO
,VO
进行业务操作。
具体可以看网上的一个例子:
.
比如
一个简历 ⇒ 有教育经历、工作经历、社会关系等等。
.
我们可以把教育经历对应一个PO
,工作经历对应一个PO
,社会关系对应一个PO
。
建立一个对应简历的BO
对象处理简历,每个BO
包含这些PO
。
.
这样处理业务逻辑时,我们就可以针对BO
去处理。
@Service
<mark>DTO</mark>:数据传输对象(
Data Transfer Object
)是一种设计模式之间传输数据的软件应用系统。
数据传输目标往往是数据访问对象从数据库中检索数据。
数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。
简单来说,
当我们需要一个对象10个字段的内容,
但这个对象总共有20个字段,
我们不需要把整个PO
对象全部字段传输到客户端,
而是可以用DTO
重新封装,传递到客户端。
此时,如果这个对象用来对应界面的展现,就叫VO
。
<mark>JavaBean</mark>:一种可重用组件
即“一次性编写,任何地方执行,任何地方重用”满足三个条件
- <mark>类必须是具体的和公共的</mark>
- <mark>具有无参构造器</mark>
- 提供一致性设计模式的公共方法将内部域暴露成员属性。
.
主要用途:可以用在 功能、处理、值、数据库访问和JSP中任何可以用Java代码创造的对象。
有两种:
- 一种是有用户界面(
UI
,User Interface
)的JavaBean
;- 还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的
JavaBean
。
JSP通常访问的是后一种JavaBean。
分类:
通常有Session bean
,Entity bean
,MessageDrivenBean
三大类
Session bean
会话构件
是短暂的对象
运行在服务器上,并执行一些应用逻辑处理
它由客户端应用程序建立,其数据需要自己来管理。
分为无状态和有状态两种。Entity bean
实体构件
是持久对象,可以被其他对象调用。
<mark>在建立时指定一个唯一标示的标识</mark>,并允许客户程序,根据实体bean标识来定位beans实例。
多个实体可以并发访问实体bean,事务间的协调由容器来完成。MessageDriven Bean
消息构件
是专门用来处理JMS
(Java Message System
)消息的规范(EIB2.0
)。
JMS
是一种与厂商无关的API
,用来访问消息收发系统,并提供了与厂商无关的访问方法,以此来访问消息收发服务。
JMS
客户机可以用来发送消息而不必等待回应。
JavaBeans:JavaBeans
从狭义来说,指的是 JavaBeans 规范也就是位于 java.beans 包中的一组 API。
从广义上来说,JavaBeans 指的是 API 集合,比如 Enterprise JavaBeans。
@Bean
<mark>POJO</mark>:POJO(
Plain Ordinary Java Object
)简单的Java对象实际就是普通JavaBeans
是为了避免和EJB混淆所创造的简称。
通指没有使用
Entity Beans
的普通java对象,可以把POJO
作为支持业务逻辑的协助类。
POJO实质上可以理解为简单的实体类,
顾名思义POJO类的作用是方便程序员使用数据库中的数据表
.对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。
POJO类也给我们在struts
框架中的配置带来了很大的方便。
总结
- 一个
POJO(Plain Ordinary Java Object)
持久化以后就是PO(persistent object)
- 直接用它传递、传递过程中就是
DTO(Data Transfer Object)
- 直接用来对应表示层就是
VO(Value Object )
然后,
三层架构
- 表现层 ⇒ (
View Object
) - 业务对象层 ⇒ BO(
Business Object
) - 数据访问层 ⇒ DAO(
Data Access Object
)