您的位置:首页 > 编程语言 > Java开发

spring的事务的传播特性

2014-06-13 16:46 323 查看
基本的六种事务传播:

1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启

2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行

3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。

5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。

6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常

Spring配置声明式事务:

* 配置SessionFactory

* 配置事务管理器

* 事务的传播特性

* 那些类那些方法使用事务

2、编写业务逻辑方法

* 继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是

Hibernate Session的轻量级封装

* 默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的

* 编写业务逻辑方法时,最好将异常一直向上抛出,在表示层(struts)处理

* 关于事务边界的设置,通常设置到业务层,不要添加到Dao上

<!-- 配置SessionFactory -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="configLocation">

<value>classpath:hibernate.cfg.xml</value>

</property>

</bean>

<!-- 配置事务管理器 -->

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<!-- 事务的传播特性 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="add*" propagation="REQUIRED"/>

<tx:method name="del*" propagation="REQUIRED"/>

<tx:method name="modify*" propagation="REQUIRED"/>

<tx:method name="*" propagation="REQUIRED" read-only="true"/>

</tx:attributes>

</tx:advice>

<!-- 哪些类哪些方法使用事务 -->

<aop:config>

<aop:pointcut expression="execution(* com.xxx.service.*.*(..))" id="transactionPC"/>

<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPC"/>

</aop:config>

<!-- 普通IOC注入 -->

<bean id="userManager" class="com.biped.service.UserManagerImpl">

<property name="logManager" ref="logManager"/>

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<bean id="logManager" class="com.biped.service.LogManagerImpl">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

文章来源:http://syc629.blog.163.com/blog/static/1847420232011101811153302/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: