事务管理

通过这三个方法进行管理

  1. // 开启事务,指定隔离级别
  2. TransactionManager.beginTraction(TractionLevel.READ_COMMITTED);
  3. // 开启事务,使用默认隔离级别,默认 READ_COMMITTED
  4. TransactionManager.beginTraction();
  5. // 提交事务
  6. TransactionManager.commit();
  7. // 回滚事务
  8. TransactionManager.rollback();

这三个方法的作用域是线程级别的,只要在同一个线程内,一旦开启了事务,那么后面的数据库操作都会进入同一个事务,一起提交,一起回滚

所以,用户可以自己用动态代理 封装 统一的事务管理

事务隔离级别:

  • READ_COMMITTED
  • READ_UNCOMMITTED
  • REPEATABLE_READ
  • SERIALIZABLE

READ_COMMITTED: 仅允许读取已提交的数据,即不能读脏,但是可能发生不可重读和幻读。

READ_UNCOMMITTED 允许读脏,不可重读,幻读。

REPEATABLE_READ 不可读脏,保证同一事务重复读取相同数据,但是可能发生幻读。

SERIALIZABLE 串行事务,保证不读脏,可重复读,不可幻读,事务隔离级别最高。