1、事务管理回顾
- 事务:一组业务操作 ABCD,要么全部成功,要么全部不成功。
- 特性:ACID(原子性、一致性、隔离性、持久性)
原子性:整体;一致性:完成;隔离性:并发;持久性:结果 - 隔离问题:
脏读:一个事务读到另一个事务没有提交的数据
不可重复读:一个事务读到另一个事务已经提交的数据(update)
虚读(幻读):一个事务读到另一个事务已经提交的数据(insert) - 隔离级别
read uncommitted:读未提交。存在3个问题
read committed:读已提交。解决脏读,存在2个问题
repeatable read:可重复读。解决:脏读、不可重复读,存在1个问题
serializable:串行化。都解决,单事务
- mysql事务的操作–简单
- mysql事务操作–Savapoint
2、事务管理介绍
导入jar包
三个顶级接口
导入的jar包,有三个以下类:
PlatformTransactionManager 事务管理器
- 导入jar包:需要的是平台事务管理器的实现类
- 常见的事务管理器
- API详解
TransactionStatus
TransactionDefinition
3、事务管理应用案例
3.1、搭建环境
创建表
导入jar包
dao层
servic层
spring配置
测试
3.2、手动管理事务(了解)
在上面的转账案例中,当出现异常时,可能导致汇款成功,收款不成功的错误。需要把这两个方法做成一个事务。要么都成功,要么都不成功。
- spring底层使用 TransactionTemplate 事务模板进行操作
- 操作
a、service 需要获得 TransactionTemplate
b、spring 配置模板,并注入给 service
c、模板需要注入事务管理器
d、配置事务管理器:DataSourceTransctionManager,需要注入DataSource
修改service
修改spring配置
3.3、工厂 bean 生成代理:半自动
- spring提供 管理事务的代理工厂bean TransactionProxyFactoryBean
a、getBean() 获得代理对象
b、spring 配置一个代理
dao类
Service类
spring配置
测试
3.4、AOP配置基于xml【掌握】
- 在spring xml 配置aop 自动生成代理,进行事务管理
a、配置管理器
b、配置事务详情
c、配置aop
dao层
service层
配置文件
测试
3.5、AOP配置基于注解【掌握】
a、配置事务管理器,并将事务管理器交予spring
b、在目标类或目标方法添加注解即可,@Transactional
service层
spring配置
事务详情配置
4、整合Junit
导入jar包
基本:4 + 1
测试:spring-test…jar
a、让Junit通知spring加载配置文件
b、让spring容器自动进行注入
修改测试类
5、整合web
导入jar包
tomcat 启动加载配置文件
以下是三种方式可以加载配置文件,使用第三种listener:
如果只配置监听器,默认加载的xml位置为:
确定配置文件位置,通过系统初始化参数
ServletContext 初始化参数 web.xml
从servletContext 作用域获得spring 容器(了解)
使得在网页中点击链接即可实现汇款功能
6、SSH整合
6.1、jar整合
struts
spring
hibernate
整合包
- spring整合 hibernate:spring orm
- struts整合 spring:struts2-spring-plugin-2.3.15.3.jar
删除重复的jar包
6.2、spring整合hibernate:有hibernate.cfg.xml
创建表
PO类
- javabean
- 映射文件
dao层
- spring 提供HibernateTemplate 用于操作PO 对象,类似Hibernate Session对象
service层
hibernate.cfg.xml
applicationContext.xml
- 添加命名空间
- 加载hibernate配置文件
- dao和service
- 事务管理
- 测试
6.3、spring整合hibernate:没有hibernate.cfg.xml【】
- 删除 hibernate.cfg.xml文件,但需要保存文件内容,将其配置到spring中
- 修改dao层,继承 HibernateDaoSupport
修改spring,配置SessionFactory
修改dao,使用HibernateDaoSupport
- 继承 HibernateDaoSupport
- spring 删除模板,给dao注入SessionFactory
6.4、struts整合spring:spring创建action
- 编写action类,并将其配置给 spring,spring可以注入service
- 编写 structs.xml
- 表单jsp 页面
- web.xml配置
a、确定配置文件位置 contextConfigLocation
b、配置监听器 ContextLoaderListener
c、配置前端控制器 StrutsPrepareAndExecuteFitler
通用
功能
spring配置
struts配置
jsp表单
配置web.xml
6.5、struts整合spring:struts创建action【】
删除 spring action配置
删除下图内容:
structs <action class="全限定类名"
要求
Action类中,必须提供service名称与spring 配置文件一致。(如果名称一样,将自动注入)
分析
- struts 配置文件:
default.properties ,常量配置文件
struts-default.xml ,默认核心配置文件
struts-plugins.xml ,插件配置文件
struts.xml,自定义核心配置文件
常量的使用,后面配置项,将覆盖前面的。 - default.properties ,此配置文件中确定 按照【名称】自动注入
- struts-plugins.xml ,struts整合spring
总结,之后action有spring创建,并按照名称自动注入。