一、
二、事务隔离级
脏读:允许读取未提交的信息
原因: Read uncommitted(读了未提交的数据)
解决方案: Read committed(表级读锁)
不可重复读:读取过程中单个数据发生了变化(如:第1次读完数据后,该条数据被别人改了,第2次再读就导致两次数据不一致)
解决方案: Repeatable read(行级写锁)
幻读:读取过程中数据条目发生了变化(如:第1次读完数据后,对表进行增删改等操作,第2次再读就导致两次数据不一致)
解决方案: Serializable(表级写锁)
三、Spring事务核心对象
J2EE开发使用分层设计的思想进行,对于简单的业务层转调数据层的单一操作,事务开启在业务层或者数据层并无太大差别,当业务中包含多个数据层的调用时,需要在业务层开启事务,对数据层中多个操作进行组合并归属于同一个事务进行处理
Spring为业务层提供了整套的事务解决方案
PlatformTransactionManager
TransactionDefinition
TransactionStatus
1、PlatformTransactionManager
平台事务管理器实现类
DataSourceTransactionManager 适用于Spring JDBC或MyBatis
HibernateTransactionManager 适用于Hibernate3.0及以上版本
JpaTransactionManager 适用于JPA
JdoTransactionManager 适用于JDO
JtaTransactionManager 适用于JTA
JPA (Java Persistence API) Java EE标准之一,为POJO提供持久化标准规范,并规范了持久化开发的统一API,符合JPA规范的开发可以在不同的JPA框架下运行
JDO(Java Data Object )是Java对象持久化规范,用于存取某种数据库中的对象,并提供标准化API。与JDBC相比,JDBC仅针对关系数据库进行操作,JDO可以扩展到关系数据库、文件、XML、对象数据库(ODBMS)等,可移植性更强
JTA(Java Transaction APl) Java E标准之一,允许应用程序执行分布式事务处理。与JDBC相比,JDBC事务则被限定在一个单一的数据库连接,而一个JTA事务可以有多个参与者,比如JDBC连接、JDO都以参与到一个JTA事务中
1.1、
2、
3、
刷新事务状态:如果操作过程中事务发生了变化,你可以刷新事务状态。
获取事务是否具有回滚存储点:如果你设有回滚点的话,可以看看是否具有回滚点,有回滚点和没有回滚点的操作是不一样的。一个是回滚全部,另一个是回滚一部分。