spring的事务处理

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(){}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值