一,spring事务管理
1.1spring事务管理三个高层接口
platformTransactionManager 平台相关事务管理器
TransactionDefinition 事务定义信息
TransactionStatus事务运行状态
TransactionManager 是整个spring事务管理核心对象,提供事务管理相关方法
commit rollback等
1.1.1
spring为不同的持久化框架提供不同platformTransactionManager接口实现
使用不同的持久化技术,就需要使用spring提供不同的事务管理器
spring jdbc;mybatis;hibernate;jpa等
jdbc编程-- 通过connection进行事务管理
开启事务conn.setAutoCommit(false);
提交事务conn.commit();
回滚事务conn.rollback();
spring提供DataSourceTransactionManager针对Connection进行事务管理
Hibernate编程--通过session进行事务管理
开启事务 session.beginTransaction();
提交事务session.getTransaction().commit();
回滚事务session.getTransaction().rollback();
spring提供 HibernateTransactionManager针对session进行事务管理
1.1.2 TransactionDefinition事务定义信息
TransactionDefinition 主要指spring管理事务过程中,配置如何对事务进行管理
(隔离级别,传播行为,超时时间,是否只读)
脏读:一个事务读取另一个事务改写但未提交的修改,如果这些数据被回滚,则读到的数据是无效的。
不可重复读:同一事务多次读取同一数据返回结果不同。后续读取能读到另一个事务已提交的数据。相反,可重复读是指同一事务多次读取数据时,能够保证所读数据一样,
后续不能读取到另一事务提交事务。
幻读:一个事务读取了几行数据后,另一个事务插入一些记录,幻读就产生了。再后来的查询中,第一个事务就会发现之前没有的数据。
oracle只支持read committed(默认), serializable;
mysql四种隔离级别都支持,默认是可重复读,比oracle高一个级别;
事务传播行为(七种)