Spring声明式事务的配置
<tx:advice transaction-manager="transactionManager" id="txAdvice">
<tx:attributes>
<tx:method name="saveUser" />
</tx:attributes>
</tx:advice>
propagation :事务传播属性
propagation :事务传播属性
REQUIRED:需要事务
如果外层没有事务则开启新的事务 如果外层存在事务,则融入当前事务
SUPPORTS:支持事务(通常给查询类业务加上)
如果外层没有事务不会开启新的事务 如果外层存在事务,则融入当前事务
REQUIRES NEW:每次开启新的事务
如果外层存在事务,外层事务挂起,自己开启新的事务执行,执行完成,恢复外层事务继续执行
NOT_SUPPORTED:不支持事务
如果外层存在事务,外层事务挂起,自己以非事务方式执行,执行完成,恢复外部事务执行
NEVER:不能有事务
存在事务报错
MANDATORY:强制事务
没有事务报错
NESTED:嵌套事务(关系型数据库 不支持)
事务之间可以嵌套运行
事务的隔离级别
isolation:事务隔离级别
DEFAULT:使用数据库默认的隔离级别[推荐]
READ_UNCOMMITTED:读未提交
一个客户端读到了另一个客户端没有提交的数据 脏读现象
READ_COMMITTED:读提交 ---Oracle
一个客户端只能读到另一个客户端提交的数据避免脏读现象
REPEATABLE READ :可重复读 行锁 ----mysql
主要是用来避免不可重复读现象出现
(不可重复读 再一次业务中 数据总是被另一个业务逻辑修改变化)
SERIALIZABLE:序列化读 表锁
主要是用来避免幻影读现象出现
(幻影读 再一次业务查询中 数据总是被另一个业务逻辑增加或修改变化)
read-only :事务读写性
true 只读不能执行增删改操作
false:可读可写(mysql支持 oralce不支持)
rollback-for:出现什么类型异常回滚默认出现RuntimeException及其子类异常回滚
no-rollback-for:出现什么类型异常不会滚
timeout:事务超时性(挂起时长) -1永不超时 单位:秒