事务

事务的传播机制

propagation=


Propagation.REQUIRED:
必须要有事务,如果原来有事务则假如原事务,原来没有事务则新建个事务执行

Propagation.NOT_SUPPORTED:
不开启事务

Propagation.REQUIRES_NEW:
不管是否原来有事务,都新开启一个事务,将原来的事务挂起,等本事务执行完毕之后,再继续原来的事务

Propagation.MANDATORY:
必须要在一个事务中执行,如果原来没有事务,则直接异常

Propagation.NEVER:
必须没有事务执行,如果原来有事务,则直接异常

Propagation.SUPPORTS:
依调用该方法的地方为准,调用方有事务就按照他的事务执行,如果没有事务就无事务执行

事务会出现的问题

脏读:
一个事务读取到另一事务未提交的更新数据
隔离级别为读未提交会出现脏读,隔离级别高于读未提交可以解决该问题

不可重复读:
同一事务中多次读取数据返回结果不同,原因是其他事务在本事务读取数据的事务中改动了对应的数据
隔离级别为读未提交读已提交会出现不可重复读,隔离级别高于读已提交可解决该问题

幻读:
一个事务读取到另一个事务已经提交的 insert 数据
隔离级别为读已提交可重复读会出现幻读,隔离级别高于可重复读可解决该问题

事务隔离级别

isolation =


Isolation.READ_UNCOMMITTED
读取未提交数据(会出现脏读, 不可重复读) 基本不使用

Isolation.READ_COMMITTED
读取已提交数据(会出现不可重复读和幻读)

Isolation.REPEATABLE_READ
可重复读(会出现幻读)

Isolation.SERIALIZABLE
串行化

你可能感兴趣的:(事务)