Spring 事务机制
文章转自:http://blog.csdn.net/lenolong/article/details/3945618
spring事务管理:
可以通过两种方式实现,一是用AOP来控制事务:
<!--配置事务管理器-->
<beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory">
<reflocal="sessionFactory"/>
</property>
</bean>
<!--配置事务特性-->
<tx:adviceid="txAdvice"transaction-manager="transactionManager">
<tx:attributes>
<tx:methodname="*"propagation="REQUIRED"/>
<!--
<tx:methodname="add*"propagation="REQUIRED"/>
<tx:methodname="del*"propagation="REQUIRED"/>
<tx:methodname="update*"propagation="REQUIRED"/>
<tx:methodname="deploy*"propagation="REQUIRED"/>
<tx:methodname="submit*"propagation="REQUIRED"/>
<tx:methodname="*"read-only="true"/>
-->
</tx:attributes>
</tx:advice>
<!--配置哪些类的方法进行事务管理-->
<aop:config>
<aop:pointcutid="allManagerMethod"expression="execution(*com.bjsxt.oa.managers.*.*(..))"/>
<aop:advisoradvice-ref="txAdvice"pointcut-ref="allManagerMethod"/>
</aop:config>
二是用事务拦截器的方式来控制事务:
<!--TransactionmanagerforasingleHibernateSessionFactory(alternativetoJTA)-->
<beanid="myTransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory">
<reflocal="mySessionFactory"/>
</property>
</bean>
<!--配置事务管理-->
<beanid="userService"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<propertyname="transactionManager">
<reflocal="myTransactionManager"/>
</property>
<propertyname="target">
<reflocal="loginTarget"/>
</property>
<propertyname="transactionAttributes">
<props>
<propkey="save*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!--OrderTargetprimarybusinessobjectimplementation-->
<beanid="loginTarget"class="com.test.spring.UserServiceImpl">
<propertyname="userDAOIF">
<reflocal="userDAO"/>
</property>
</bean>
<!--DAOobject:Hibernateimplementation-->
<beanid="userDAO"class="com.test.hibernate.UserDAOImpl">
<propertyname="sessionFactory">
<reflocal="mySessionFactory"/>
</property>
</bean>