Spring的事物
2017-04-01 11:14:07 0 举报
AI智能生成
登录查看完整内容
事务
作者其他创作
大纲/内容
事务
事务隔离级别
TransactionDefinition 接口中定义了五个表示隔离级别的常量
TransactionDefinition.ISOLATION_DEFAULT
对于大部分数据库而言,通常这个值就是ISOLATION_READ_COMMITTED
ISOLATION_READ_UNCOMMITTED
该隔离级别标示:一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读和不可重复读。因此很少使用该隔离级别
ISOLATION_READ_COMMITTED
该隔离级别表示:一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读。这也是大多数情况下推荐值。
ISOLATION_REPEATABLE_READ
该隔离级别表示:一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别可以防止脏读和不可重复读。
ISOLATION_SERIALIZABLE
所有事务逐个依次执行,该级别可以防止脏读、不可重复读、幻读。但是严重影响性能,通常不使用。
事务传播行为
如果在开始当前事务之前,一个事务上下文已经存在,此时有若干个选项可以指定一个事务性方法的执行行为。
TransactionDefinition.PROPAGATION_REQUIRED
如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务
PROPAGATION_REQUIRES_NEW
创建一个新的事务,如果当前存在事务,则把当前事务挂起
PROPAGATION_SUPPORTS
如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式继续运行
PROPAGATION_NOT_SUPPORTED
以非事务方式运行,如果当前存在事务,则把当前事务挂起
PROPAGATION_NEVER
以非事务方式运行,如果当前存在事务,则抛出异常
PROPAGATION_MANDATORY
如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常
PROPAGATION_NESTED
如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于PROPAGATION_REQUIRED
Spring 中事务管理API分析
TransactionDefinition
getIsolationLevel
getPropagationBehavior
getTimeout
isReadOnly
PlatformTransactionManager
getTransaction
rollback
commit
TransactionStatus
isNewTransaction
setRollbackOnly
isRollbackOnly
事务超时
事务的只读属性
事务的回滚规则
0 条评论
回复 删除
下一页