Spring处理事务:
①编码实现
②声明式事务(基于AOP)
Spring并不直接管理事务,而是提供了多种事务管理器
Spring的事务管理器的特定平台相关的事务实现:
①JDBC:DataSourcetransactionmanager
②Hibernate:Hibernatetransactionmanager
☂JPA:Jpatransactionmanager
④JTA:Jtatransactionmanager
在spring中,声明式事务是通过事务属性来定义的;spring提供了多种声明式事务的机制,但是所有的方式都依赖这五个参数来控制如何管理事务策略:
①传播行为
②隔离级别
☂回滚规则
④事务超时
⑤是否只读
Spring通过xml配置声明事务:使用tx命名空间
<!-- 1.配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 2.配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>//表示任何方法
</tx:attributes>
</tx:advice>
<!-- 3.切面配置,并且把切点和事务关联起来 -->
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.tanghaibin.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>
定义注解驱动的事务:
①只需要在xml中配置:<tx:annotation-driven transaction-manager="事务管理器id"/>;此元素告诉spring检查上下文中所有的bean并查找使用@Transactional注解的bean,而不管这个注解是用在类级别上还是方法级别上,对于每一个使用@Transactional注解的bean,此元素会自动为它添加事务通知,通知的参数是通过@Transactional注解的参数来定义的
如果一个方法不需要事务,则可以添加事务的传播行为不使用事务就可以了
@Transactional(propagation=Propagation.Not_SUPPORTED)
public void query(){}
①编码实现
②声明式事务(基于AOP)
Spring并不直接管理事务,而是提供了多种事务管理器
Spring的事务管理器的特定平台相关的事务实现:
①JDBC:DataSourcetransactionmanager
②Hibernate:Hibernatetransactionmanager
☂JPA:Jpatransactionmanager
④JTA:Jtatransactionmanager
在spring中,声明式事务是通过事务属性来定义的;spring提供了多种声明式事务的机制,但是所有的方式都依赖这五个参数来控制如何管理事务策略:
①传播行为
②隔离级别
☂回滚规则
④事务超时
⑤是否只读
Spring通过xml配置声明事务:使用tx命名空间
<!-- 1.配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 2.配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>//表示任何方法
</tx:attributes>
</tx:advice>
<!-- 3.切面配置,并且把切点和事务关联起来 -->
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.tanghaibin.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>
定义注解驱动的事务:
①只需要在xml中配置:<tx:annotation-driven transaction-manager="事务管理器id"/>;此元素告诉spring检查上下文中所有的bean并查找使用@Transactional注解的bean,而不管这个注解是用在类级别上还是方法级别上,对于每一个使用@Transactional注解的bean,此元素会自动为它添加事务通知,通知的参数是通过@Transactional注解的参数来定义的
如果一个方法不需要事务,则可以添加事务的传播行为不使用事务就可以了
@Transactional(propagation=Propagation.Not_SUPPORTED)
public void query(){}