springBoot框架中⼏个层之间的关系
/**
* controller控制器,⽤于接收和返回数据,
* 并把接收到的参数传给mapper,调⽤mapper的⽅法接⼝
* 响应⽤户请求:决定使⽤什么视图,需要准备什么数据来显⽰
*/
1
spring boot 中分为为 controller层、service层、dao层、entity层。
entity层:entity层和model层⼀样,存放的是实体类,属性值与数据库中的属性值保持⼀致。实现set和get⽅法。
dao层:即mapper层,对数据库进⾏持久化操作,他的⽅法是针对数据库操作的,基本⽤到的就是增删改查。它只是个接⼝,只有⽅法名字,具体实现在l中。
service层:业务层,存放业务逻辑处理,不直接对数据库进⾏操作,有接⼝和接⼝实现类,提供controller层调⽤的⽅法。
controller层:控制器层,导⼊service层,调⽤service
⽅法,controller通过接收前端传过来的参数进⾏业务操作,在返回⼀个指定的路径或者数据表。
controller控制器,⽤于接收和返回数据,
并把接收到的参数传给mapper,调⽤mapper的⽅法接⼝
2
可以这样理解:
controller层-----> service层(接⼝—>接⼝实现类) -----> dao层的.mapper⽂件 -----> 和mapper层⾥的.xml⽂件对应
Model层是数据层: TableName是对数据表实体的映射;
Criteria传输前台数据
DTO 传输类间数据
Mapper层 放置SQL查询XML⽂件
Dao层相当于XML⽂件的抽象类
3
View层->Controller层(响应⽤户请求)->Service层(接⼝->接⼝实现类)->DAO层,即Mapper层(抽象类:xxxMapper.java⽂件,具体实现在l)->Model层(实体类:xxx.java)
数据层,业务层,控制层
2|0
1.view层::根据接收的数据,显⽰给⽤户浏览(使⽤模板引擎)
3.service层:
xxxService.java 接⼝⽅法声明;
xxxServiceImpl.java :接⼝实现;把 Mapper(与数据库直接打交道)和Service(不直接和数据库打交道)进⾏整合作⽤:存放业务逻辑处理,不直接和数据库打交道
具有接⼝和接⼝的实现⽅法,在实现类中要倒⼊mapper
提供业务处理的⽅法
4.Mapper层(即 DAO层):数据库的CRUD接⼝,封装对数据库进⾏数据持久化操作。
具体的CRUD接⼝实现在l中
提供getter/setter⽅法,接⼊数据库。
3|0VO、DTO、DO、PO理解3|1解释
VO:View Object,视图层,其作⽤是将指定页⾯的展⽰数据封装起来。
DTO:Data Transfer Object,数据传输对象
DO:Domain Object,领域对象
PO:Persistent Object,持久化对象
3|2模型
⽤户发出请求(填写表单),表单的数据被展⽰层匹配为VO
展⽰层把VO转换为服务层对应⽅法所要求的DTO,提交给服务层
服务层先将DTO的数据构造(或重建)⼀个DO,调⽤DO的业务⽅法完成具体业务
服务层再将DO转换为持久层对应的PO,调⽤持久层的持久化⽅法,把PO传递持久化⽅法,完成持久化操作
4|0PO、VO、BO、DTO、DO、POJO、JavaBean、JavaBeans
PO:持久对象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数据库表⾥⾯的某个字段。完全是⼀个符合Java Bean规范的纯Java对象,没有增加别的属性和⽅法。持久对象是由insert数据库创建,由数据库delete删除的。基本上持久对象⽣命周期和数据库密切相关。
VO: 表现层对象(View Object),主要对应展⽰界⾯显⽰的数据对象,⽤⼀个VO对象来封装整个界⾯展⽰所需要的对象数据,数据脱敏,去掉⽤户隐私数据。
BO:业务对象层的缩写(Business Object),封装业务逻辑的java对象,通过调⽤DAO⽅法,结合PO,VO进⾏业务操作。具体可以看⽹上的⼀个例⼦:
⽐如⼀个简历,有教育经历、⼯作经历、社会关系等等。jsp用什么前端框架
我们可以把教育经历对应⼀个PO,⼯作经历对应⼀个PO,社会关系对应⼀个PO。
建⽴⼀个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
DTO:数据传输对象(Data Transfer Object),是⼀种设计模式之间传输数据的软件应⽤系统。数据传输⽬标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是⼀个以不具有任何⾏为除了存储和检索的数据(访问和存取器)。简单来说,当我们需要⼀个对象10个字段的内容,但这个对象总共有20个字段,我们不需要把整个PO对象全部字段传输到客户端,⽽是可以⽤DTO重新封装,传递到客户端。此时,如果这个对象⽤来对应界⾯的展现,就叫VO。
JavaBean:⼀种可重⽤组件,即“⼀次性编写,任何地⽅执⾏,任何地⽅重⽤”。满⾜三个条件①类必须是具体的和公共的②具有⽆参构造器③提供⼀致性设计模式的公共⽅法将内部域暴露成员属性。
主要⽤途:可以⽤在 功能、处理、值、数据库访问和JSP中任何可以⽤Java代码创造的对象。
有两种:⼀种是有⽤户界⾯(UI,User Interface)的JavaBean;还有⼀种是没有⽤户界⾯,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后⼀种JavaBean。
分类:通常有Session bean,Entity bean,MessageDrivenBean三⼤类
——Session bean会话构件,是短暂的对象,运⾏在服务器上,并执⾏⼀些应⽤逻辑处理,它由客户端应⽤程序建⽴,其数据需要⾃⼰来管理。分为⽆状态和有状态两种。
——Entity bean实体构件,是持久对象,可以被其他对象调⽤。在建⽴时指定⼀个唯⼀标⽰的标识,并允许客户程序,根据实体bean标识来定位beans实例。多个实体可以并发访问实体bean,事务间的协调由容器来完成。
——MessageDriven Bean消息构件,是专门⽤来处理JMS(Java Message System)消息的规范(EIB2.0)。JMS是⼀种与⼚商⽆关的API,⽤来访问消息收发系统,并提供了与⼚商⽆关的访问⽅法,以此来访问消息收发服务。JMS客户机可以⽤来发送消息⽽不必等待回应。
JavaBeans:JavaBeans 从狭义来说,指的是 JavaBeans 规范也就是位于 java.beans 包中的⼀组 API。从⼴义上来说,JavaBeans 指的是 API 集合,⽐如 Enterprise JavaBeans。
POJO:POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。通指没有使⽤Entity Beans的普通java对象,可以把POJO作为⽀持业务逻辑的协助类。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作⽤是⽅便程序员使⽤数据库中的数据表,对于⼴⼤的程序员,可以很⽅便的将POJO类当做对象来进⾏使⽤,当然也是可以⽅便的调⽤其get,set⽅法。POJO类也给我们在struts框架中的配置带来了很⼤的⽅便。
⼀个POJO持久化以后就是PO
直接⽤它传递、传递过程中就是DTO
直接⽤来对应表⽰层就是VO
DAO: 数据访问对象是第⼀个⾯向对象的数据库接⼝,是⼀个数据访问接⼝(Data Access Object)。它可以把POJO持久化为PO,⽤PO组装出来VO、DTO。
DAO模式是标准的J2EE设计模式之⼀.开发⼈员使⽤这个模式把底层的数据访问操作和上层的商务逻辑分开.⼀个典型的DAO实现有下列⼏个组件:
1. ⼀个DAO⼯⼚类;
2. ⼀个DAO接⼝;
3. ⼀个实现DAO接⼝的具体类;
4. 数据传递对象(有些时候叫做值对象).
具体的DAO类包含了从特定的数据源访问数据的逻辑,⼀般⼀个DAO类和⼀张表对应,每个操作要和事务关联。
@Override 的⽤法
在java中如果⽅法上加@Override的注解的话,表⽰⼦类重写了⽗类的⽅法。当然也可以不写,写的好处是:
1. 可读性提⾼
2. 编译器会校验写的⽅法在⽗类中是否存在
1.
public class Father {
public void test(){
System.out.println("test");
}
class child extends Father{
@Override
public void test(){
}
}
}
如果将test写成test1的话,编译器在⽗类中未到此⽅法,将会报错如果将@override注释去掉的话,那么编译器则会认为创建了新的⽅法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论