在JEE中事物一直是一个备受关注的点,我也一直想全面了解一下,最近有空把他总结一下。
首先,事物的几个特征和传播特性就不说了,主要说一下Spring对事物的支持,
Spring对事物是通过事物管理器去支持不同平台的事物管理的。如下图:
以上就是Spring对不同平台提供的事物支持。
其次就是事物的声明配置,现在比较常用的就是2种,
一种是通过tx标签写的配置文件,例如:
<!-- 定义事务管理器(声明式的事务) -->
<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="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="interceptorPointCuts"
expression="execution(* com.bluesky.spring.dao.*.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="interceptorPointCuts" />
</aop:config>
第二种就是通过注解的形式,注解@transactional可以写在类或方法上,当Spring扫到后添加事物通知,如下:
@Transactional
@Services
public class UserServiceImpl implements BaseService{
public List<User> listUsers() {
return this.getSession().createQuery("from User").list();
}
}
以上就是大致的总结。欢迎提出疑议