spring的传播行为和隔离级别

谁能我解决一下吗,详细点好... 谁能我解决一下吗,详细点好 展开
 我来答
若以下回答无法解决问题,邀请你更新回答
匿名用户
2013-08-11
展开全部
在使用Spring时,大部分会用到他的声明式事务,简单的在配置文件中进行一些规则配置,利用Spring的AOP功能就能轻松搞定事务问题;这里面就涉及到一个事务的传播属性问题Propagation,它在TransactionDefinition接口中定义,以供PlatfromTransactionManager使用,PlatfromTransactionManager是spring事务管理的核心接口。

TransactionDefinition
public interface TransactionDefinition {
 int getPropagationBehavior();
 int getIsolationLevel();
 int getTimeout();
 boolean isReadOnly();
}

  getTimeout()方法,它返回事务必须在多少秒内完成。

  isReadOnly(),事务是否只读,事务管理器能够根据这个返回值进行优化,确保事务是只读的。

  getIsolationLevel()方法返回事务的隔离级别,事务管理器根据它来控制另外一个事务可以看到本事务内的哪些数据。

  在TransactionDefinition接口中定义了五个不同的事务隔离级别,ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应,ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。

  在TransactionDefinition接口中共有7种选项可用:

  PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

  PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

  PROPAGATION_MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

  PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

  PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

  PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式