一、事务基本概念
事务,是一系列操作组成的工作单元。
特性:ACID--> 原子性,一致性,隔离性,持久性。
由于并发事务出现的问题:丢失更新(1),脏读(2),不可重复读(3),幻读(4)
解决问题的隔离级别:未提交读(1,2,3,4),提交读(3,4), 可重复读(4),序列化(串行)
二、Spring事务
1> Spring中事务的隔离级别
2> Spring这种的事务:编程式事务管理器,声明式事务管理器
编程式事务:即采用注解的方式,并且在spring的配置文件中添加:<context:annotation-config>,作用是开启注解的方式,在注解中配置事务。然后在java文件(类或接口)的方法上方添加@Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
声明式事务:有多种方式,包括使用tx标签方式,使用代理方式,使用拦截器方式
Spring提供了许多内置事务管理器实现:
- DataSourceTransactionManager:位于org.springframework.jdbc.datasource包中,数据源事务管理器,提供对单个javax.sql.DataSource事务管理,用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事务管理;
- JdoTransactionManager:位于org.springframework.orm.jdo包中,提供对单个javax.jdo.PersistenceManagerFactory事务管理,用于集成JDO框架时的事务管理;
- JpaTransactionManager:位于org.springframework.orm.jpa包中,提供对单个javax.persistence.EntityManagerFactory事务支持,用于集成JPA实现框架时的事务管理;
- HibernateTransactionManager:位于org.springframework.orm.hibernate3包中,提供对单个org.hibernate.SessionFactory事务支持,用于集成Hibernate框架时的事务管理;该事务管理器只支持Hibernate3+版本,且Spring3.0+版本只支持Hibernate 3.2+版本;
- JtaTransactionManager:位于org.springframework.transaction.jta包中,提供对分布式事务管理的支持,并将事务管理委托给Java EE应用服务器事务管理器;
- OC4JjtaTransactionManager:位于org.springframework.transaction.jta包中,Spring提供的对OC4J10.1.3+应用服务器事务管理器的适配器,此适配器用于对应用服务器提供的高级事务的支持;
- WebSphereUowTransactionManager:位于org.springframework.transaction.jta包中,Spring提供的对WebSphere 6.0+应用服务器事务管理器的适配器,此适配器用于对应用服务器提供的高级事务的支持;
- WebLogicJtaTransactionManager:位于org.springframework.transaction.jta包中,Spring提供的对WebLogic 8.1+应用服务器事务管理器的适配器,此适配器用于对应用服务器提供的高级事务的支持。