spring事物配置

<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
                     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                     http://www.springframework.org/schema/tx
                     http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
                     http://www.springframework.org/schema/aop
                     http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
                     "
                    
                     >
  
  

 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
 </bean>
 
 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 
 <bean id="baseDao" class="com.accp.dao.impl.BaseImpDao" abstract="true">
    <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 
 <tx:advice id="myAdvice" transaction-manager="transactionManager">
    <tx:attributes>
      <tx:method name="save*" propagation="REQUIRED"/>
      <tx:method name="delete*" propagation="REQUIRED"/>
      <tx:method name="update*" propagation="REQUIRED"/>
      <tx:method name="*" propagation="REQUIRED" read-only="true"/>
    </tx:attributes>
 </tx:advice>
 
 <aop:config>
   <aop:pointcut id="myPointCut" expression="execution(* com.accp.dao.impl.*.*(..))"/>
   <aop:advisor advice-ref="myAdvice" pointcut-ref="myPointCut"/>
 </aop:config>
 
</beans>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 中,我们可以使用注解方式来配置事务。在 Service 层的方法上添加 `@Transactional` 注解即可启用事务。 示例代码如下: ```java @Service public class UserService { @Autowired private UserRepository userRepository; @Transactional(rollbackFor = Exception.class) public void save(User user) { userRepository.save(user); } @Transactional(rollbackFor = Exception.class) public void deleteById(Long id) { userRepository.deleteById(id); } } ``` 上述代码中,`@Transactional` 注解中的 `rollbackFor` 属性用于指定需要回滚的异常类型。如果不指定,默认情况下只会在遇到 RuntimeException 异常时回滚事务。 另外,Spring Boot 还提供了一种编程式的事务管理方式,即使用 TransactionTemplate 进行事务控制。示例代码如下: ```java @Service public class UserService { @Autowired private UserRepository userRepository; @Autowired private TransactionTemplate transactionTemplate; public void save(User user) { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { userRepository.save(user); } }); } public void deleteById(Long id) { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { userRepository.deleteById(id); } }); } } ``` 使用 TransactionTemplate 进行事务控制的好处是可以更加灵活地控制事务的边界和提交方式。但是相对于注解方式来说,编程式的事务管理方式需要显式地处理事务的提交和回滚。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值