1、JDBC事务提交步骤:
connection 对象设置setAutoCommit(false),取消自动提交。。
connection对象提交事务commit() ,提交事务。
如果出现错误,connection对象将事务回滚,rallback(),回滚事务。
2、事务 是指一个操作的多个步骤要么完全成功,要么完全失败。
3、事务的四大特性:
原子性:即事务是最小单位。事务的操作要么就完全都发生,要么都不发生。
一致性:事务执行前后数据保持一致性。
隔离性:多个用户并发访问的时候,一个用户的事务不会受到其他的用户的干扰。(通过设置数据库的隔离级别来设置)
持久性:一个事务一旦被提交,对他的数据的修改就是永久的。
4、事务三个高级接口:PlateformTransactionManager(平台相关事务管理器接口)、TransactionDefinition(事务定义信息)、TransactionStatus(事务状态信息)
5、不考虑事务的隔离性,将会导致的状态有:
脏读:一个事务读取了另外一个事务未提交的数据。
不可重复读:一个事务读取另一个事务提交的数据,即一个事务先后两次读取的数据不一样。
幻读:一个事务先后读取两次,发现数据记录的条数不一样。
6、Spring提供2种事务管理方式 :
编程式事务管理:
1)在Spring中配置TransactionManager事务管理器
2)将TransactionManager注入TransactionTemplate对象中。
3)将TransactionTemplate注入到目标程序。
例:ClassUserService{
TransactionTemplatetransactionTemplate ;
//登录
publicvoid login(){
transactionTemplate.execute(newTransactionCallbackWithoutResult(){
ObjectdoInTransaction(TransactionStatus status){
//被事务管理的代码
}
})
}
}声明式事务管理:
1)基于TransactionProxyFactoryBean的方式管理事务
application.xml中的配置:
<bean 配置事务管理器transactionManager>
<bean 配置业务层的代理transactionProxyFactoryeBean>
<property 配置目标对象>
<property 注入事务管理器>
<property 注入事务的属性,隔离级别,传播行为等>
<prop 隔离级别>
</property>
</bean>
1)使用aspectJ来进行配置
application.xml中的配置:
<bean 配置事务管理器transactionManager>
<tx:advice 配置事务的增强>
<tx:attributes 配置事务的属性,隔离级别,传播行为等>
</tx:advice>
<aop:cofig 配置切面>
<aop:pointcut 配置切入点>
<aop:adviser 配置切面>
</aop:config
2)使用注解来进行配置
application.xml中的配置
<bean 配置事务管理器TransactionManager>
<tx:annotation-driven 启动事务的注解驱动>