spring+mybatis 事务之如何在service层配置事务
2016-09-20 22:05
459 查看
最近在做一个广告的项目,内容就不说了。这个架构就是spring+mybatis简单项目。这个项目其实不难,具体我就学到两个东西。这篇我就写其中一个东西,这只是自己的总结。
遇到第一个问题就是失误。当然dao层的事物其实大家都是有配置。这个没什么说的。
关键是事实上,dao层只是简单的增删改查,而实际业务的一个接口肯定不止一个增删改查的一个,有可能是调A接口的删除,在调B接口的添加。这个时候前面那个配置只能保证A接口成功时候的事务,一旦B接口失败,A接口并不会回滚。以上配置只能保证一个dao操作的事务,但实际不可能这么简单的要求。
spring的事务有两种一种是声明式事务,一种是编程式事务。今天两种都讲一下:
<tx:annotation-driven/> 就是支持事务注解的(@Transactional)
以上两种方法适合在service层配置事务。
以下很多内容都是参考mybatis官网:http://www.mybatis.org/spring/zh/transactions.html#programmatic
遇到第一个问题就是失误。当然dao层的事物其实大家都是有配置。这个没什么说的。
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
关键是事实上,dao层只是简单的增删改查,而实际业务的一个接口肯定不止一个增删改查的一个,有可能是调A接口的删除,在调B接口的添加。这个时候前面那个配置只能保证A接口成功时候的事务,一旦B接口失败,A接口并不会回滚。以上配置只能保证一个dao操作的事务,但实际不可能这么简单的要求。
spring的事务有两种一种是声明式事务,一种是编程式事务。今天两种都讲一下:
1.首先说一下编程式事务:
DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); TransactionStatus status = txManager.getTransaction(def); try { userMapper.insertUser(user); } catch (MyException ex) { txManager.rollback(status); throw ex; } txManager.commit(status);
2.接下来说一下声明式事务:
在配置文件增加这个配置,然后在需要事务的的方法前面加注解@Transactional<tx:annotation-driven transaction-manager="txManager"/>
@Transactional @Override public void addGoods(AddGoodsRequest request) { }
<tx:annotation-driven/> 就是支持事务注解的(@Transactional)
以上两种方法适合在service层配置事务。
以下很多内容都是参考mybatis官网:http://www.mybatis.org/spring/zh/transactions.html#programmatic
相关文章推荐
- spring整合mybatis是如何配置事务的?
- spring的事务管理的原理(如何设置在Action或者在Service层进行事务拦截及其回滚)
- 事务级别Spring的事务如何配置
- SpringMVC + myBatis + mySQL 全注解 事务配置
- spring mvc+mybatis+ spring 基于全注解事务配置
- spring+mybatis的事务配置
- Spring JDBC和Hibernate混用时,如何配置事务管理
- SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置
- Spring中如何配置Hibernate事务
- 在Spring中配置Service层方法的事务
- Spring中如何配置Hibernate事务
- Spring + mvc,Mybatis整合 (含事务配置,分页功能)
- spring数据源配置及事务管理--mybatis3
- spring+mybatis+Atomikos JTA事务配置说明
- Spring事务配置在DAO和Service层
- Spring的事务如何配置
- Spring中如何配置Hibernate事务
- 使用SpringMVC+mybatis+事务控制+JSON 配置最简单WEB
- Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 以及 IntelliJ IDEA 如何打开依赖视图
- Spring中如何配置Hibernate事务