日期:2014-05-16 浏览次数:20414 次
一、 Spring 中的事务
Spring 为什么提供对事务的支持?还记得我们在编写 OA 项目时,为了统一处理一类事务的多个 Dao 方法对数据库的操作是在一个事务中进行的,我们添加了一个“ *.do” 的过滤器,在过滤器中使用当前线程( ThreadLocal )的 Session 来处理事务。
?
其中我们也曾提到过将事务统一在过滤器中只是为解决一时之需,将事务统一放在 Service 的方法中才是优雅的做法。我们使用 Spring 就可以实现将事务统一放在 Service 的方法上。
?
1. 在 Spring 中引入事务
通过外部 Bean 引入数据源我就不再做总结了,这里直接列出引入 Spring 中事务类的方法。下面为引入 Jdbc 的事务管理:
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" />?
“tx” 元素指定使用注解进行事务处理的 Bean 。
?
引入 Hibernate 的事务管理:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:annotation-driv