Spring整合Mybatis和声明式事务
-
导入相关jar包
-
junit
-
mybatis
-
mysql数据可
-
spring相关
-
aop织入
-
mybatis-spring包
-
引入Spring配置文件beans.xml
-
替换mybatis-config.xml的配置
-
配置SqlSessionFactory,关联MyBatis
-
注册sqlSessionTemplate,关联sqlSessionFactory
-
增加Dao接口的实现类;私有化sqlSessionTemplate
-
注册bean实现
-
测试(service层)
声明式事务
事务
数据一致性,要么都成功,要么都失败
事务ACID原则
-
原子性
-
一致性
-
隔离性(多个业务可能操作同一个资源时,防止数据损坏)
-
持久性(提交后不再被影响,被持久化存储)
Spring中的事务管理
编程式事务管理
-
将事务管理代码嵌到业务方法中来控制事务的提交和回滚
-
缺点:必须在每个事务操作业务逻辑中包含额外的事务管理代码
声明式事务管理
-
一般情况下比编程式事务好用
-
将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理
-
将事务管理作为横切关注点,通过aop方法模块化。Spring中通过Spring AOP框架支持声明式事务管理
使用Spring管理事务,注意头文件的约束导入 : tx
xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
事务管理器
-
无论使用Spring的哪种事务管理策略(编程式或者声明式)事务管理器都是必须的
-
就是 Spring的核心事务管理抽象,管理封装了一组独立于技术的方法
-
JDBC事务
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>