事务传播行为种类
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,
它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:
事务传播行为类型
事务传播行为类型
|
说明
|
PROPAGATION_REQUIRED
|
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
|
PROPAGATION_SUPPORTS
|
支持当前事务,如果当前没有事务,就以非事务方式执行。
|
PROPAGATION_MANDATORY
|
使用当前的事务,如果当前没有事务,就抛出异常。
|
PROPAGATION_REQUIRES_NEW
|
新建事务,如果当前存在事务,把当前事务挂起。
|
PROPAGATION_NOT_SUPPORTED
|
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
|
PROPAGATION_NEVER
|
以非事务方式执行,如果当前存在事务,则抛出异常。
|
PROPAGATION_NESTED
|
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED
类 似的操作。
|
相关推荐
Spring事务类型详解: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_...
通过代码解析spring传播特性,包括 1、Propagation.REQUIRED 方法被调用时自动开启事务,在事务范围内使用... 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行。需要JDBC3.0以上支持。
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播 PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_...
Spring事务传播机制可以通过Propagation枚举类中的不同值来指定,共包括七种不同的传播行为。具体来说,Spring事务传播机制包括以下七种: REQUIRED:如果当前没有事务,则创建一个新的事务;如果当前已经存在事务,...
-- 事务处理 --> class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 其它Bean定义在此 --> <!...
彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROP
@see Propagation#REQUIRED 支持当前事务,如果没有则新建一个事务, 例:a方法调用b方法,如果a方法有事务,则b加入a事务,如果a没有,则b新建一个事务 @see Propagation#SUPPORTS 支持当前事务,如果没有则以非...
问题提出:Spring对Hibernate有自动管理事务功能,业务类的方法调用DAO类...PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事物,如果已经存在一个事物中,加入到这个事物中,具体请查阅Spring的事物传播行为。
* spring的事务管理需要添加到业务逻辑上(事务边界的定义),不要回到Dao上 技术提示: 在编写经下代码时: *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" ...
*">PROPAGATION_REQUIRED <!-- 定义BeanNameAutoProxyCreator,该bean是个bean后处理器,无需被引用,因此没有id属性--> class="org.springframework.aop.framework.autoproxy....
文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...
*" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" read-only="true"/> </tx:advice> <!-- 那些类的哪些方法参与事务 --> (* com.ccc..*.*(..))"/> <!-- 配置事务管理器,...
propagation 其他没有事务的业务方法调用的时候!我们如何进行事务传递! 默认值:required:调用者有 我就有!调用者没有我自己开启一个事务 也有! dml SUPPORTS:调用者有 我就有!调用者没有我也不添加! 适用于查询...
<beans xmlns="http://www.springframework.org/schema/beans" ... xmlns:context="http://www.springframework.org/schema/context"... *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> </beans>
-- 创建事务管理器(spring针对hibernate实现的事务管理的切面类) --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <!-- 事务的通知类型 -...
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=... *" propagation="REQUIRED" read-only="true" /> *" propagation="REQUIRED" read-only="true" /> ...
--扫描接口包路径,生成包下所有接口的代理对象,并且放入spring容器中--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--dao层配置文件结束--> <!--service层配置文件开始--> ...
*" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" read-only="true"/> <!-- 那些类的哪些方法参与事务 --> (* com.longxian.drp.manager.*.*(..))...
*" propagation="REQUIRED" /> *" propagation="REQUIRED" /> <!-- 这个映射配置主要是用来进行静态资源的访问 --> **" location="/js/" cache-period="31556926"/> **" location="/resource/" />...