SSM框架概念
SSM框架概述
SSM框架是spring、spring MVC 和mybatis框架的整合,是标准的MVC模式。标准的SSM框架有四层,分别是dao层(mapper),service层,controller层和View层。使用spring实现业务对象管理,使用spring MVC负责请求的转发和视图管理,mybatis作为数据对象的持久化引擎。
SSM框架组成部分
1)持久层:Dao层(mapper)层
作用:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。
- Dao层首先设计的是接口,然后再Spring的配置文件中定义接口的实现类。
- 然后可以在模块中进行接口的调用来进行数据业务的处理。(不在关心接口的实现类是哪个类)
- 数据源的配置以及有关数据库连接的参数都在Spring的配置文件中进行配置。
2)业务层:Service层
作用:Service层主要负责业务模块的逻辑应用设计。
- 先设计接口然后再设计实类,然后再在Spring的配置文件中配置其实现的关联。(业务逻辑层的实现具体要调用到自己已经定义好的Dao的接口上)这样就可以在应用中调用Service接口来进行业务处理。
- 建立好Dao之后再建立service层,service层又要在controller层之下,因为既要调用Dao层的接口又要提供接口给controller层。每个模型都有一个service接口,每个接口分别封装各自的业务处理的方法。
3)表现层:Controller层(Handler层)
作用:负责具体的业务模块流程的控制。
- 配置也同样是在Spring的配置文件里面进行,
- 调用Service层提供的接口来控制业务流程。
- 业务流程的不同会有不同的控制器,在具体的开发中可以将我们的流程进行抽象的归纳,设计出可以重复利用的子单元流程模块。
4)View层
作用:主要和控制层紧密结合,主要负责前台jsp页面的表示。
其他概念说明
POJO (Plain Ordinary Java Object, 简单Java对象)
实际就是普通JavaBeans,是为了避免和EJB(Enterprise Java Beans 企业级JavaBeans)混淆所创造的简称,也称为(Plain Old Java Object 又普通又老的对象)。POJO的内在含义是指:那些没有继承任何类、也没有实现任何接口,更没有被其它框架侵入的java对象。
它仅包含自身的属性以及自身属性的getter和setter方法,这意味者POJO可以方便的从一个框架迁移到另一个框架中,或者框架升级也会对代码毫无影响,因此而得到复用。
一般,当需要持久化对象时,人们喜欢将该对象放在名为xxxPOJO的目录中。当然,不建议这样命名。POJO实际上是包括BO/VO/PO/DO等一系列对象的总称。有的团队规定禁止命名成xxxPOJO。
DO (Domain Object, 领域对象)
领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO (persistence object, 持久层对象)
PO是在ORM(对象关系映射)中与数据表的一条记录相匹配,自身属性与数据表字段一一对应。可以将数据表中的一条记录作为一个对象处理,并可以转化为其它对象。
面对不同的数据源时,比如文档型数据库,对象型数据库等时,顾名思义PO是DAO层为进行持久化操作而准备的对象。
- 包含getter、setter方法。
- 不包含业务逻辑与数据库的访问方法。因为数据库本身不包含业务逻辑。
- PO平常不一定需要实现序列化,只是当采用分布式存储或者需要作为前端输出及远程调用使用时,应该实现序列化。
DAO (data access object, 数据访问对象)
包含对数据的访问,负责持久层的操作 。通常需要结合PO来访问数据库,主要用来封装对数据的访问,并不转化成其它对象。
在基于“事务脚本”的业务设计时,它包含业务逻辑。否则,一般只包含持久化的封装。
DTO (Data Transfer Object, 数据传输对象)
数据传输对象,是在应用网络层需要传输的对象,是一个为了减少方法调用次数而在进程间传输数据的对象。
在《阿里巴巴开发手册中》规定是Service 或 Manager 向外传输的对象。
某些人称这个为“值对象”,当然还是有稍许区别。值对象追求对象不可变,DTO的对象是可修改,可改变的。
VO (value object, 值对象)
Value Object和View Object的简写都是VO,可能容易弄混。View Object的含义是通常是Web向模板渲染引擎层传输的对象。《阿里巴巴开发手册》中建议把输出的显示层对象命名为VO。当然,也有人把这个对象命名为DTO作为传输。
1 | //Controller层 |
由于很多页面需要额外数据,比如错误码、提示信息、分页信息等,查询的DTO之后需要再封装成View Object 显示层对象再显示出来