事务管理
通过这三个方法进行管理
// 开启事务,指定隔离级别
TransactionManager.beginTraction(TractionLevel.READ_COMMITTED);
// 开启事务,使用默认隔离级别,默认 READ_COMMITTED
TransactionManager.beginTraction();
// 提交事务
TransactionManager.commit();
// 回滚事务
TransactionManager.rollback();
这三个方法的作用域是线程级别的,只要在同一个线程内,一旦开启了事务,那么后面的数据库操作都会进入同一个事务,一起提交,一起回滚
所以,用户可以自己用动态代理 封装 统一的事务管理
事务隔离级别:
- READ_COMMITTED
- READ_UNCOMMITTED
- REPEATABLE_READ
- SERIALIZABLE
READ_COMMITTED: 仅允许读取已提交的数据,即不能读脏,但是可能发生不可重读和幻读。
READ_UNCOMMITTED 允许读脏,不可重读,幻读。
REPEATABLE_READ 不可读脏,保证同一事务重复读取相同数据,但是可能发生幻读。
SERIALIZABLE 串行事务,保证不读脏,可重复读,不可幻读,事务隔离级别最高。