标签:
何为事务,很多从只从Java入门的朋友肯定不清楚这个概念,毕竟Spring是针对企业应用开发的 是J2EE规范下的产物,所以很多东西,新手入门肯定没有听说过。
因为我以前是web狗 SQL注入是自来熟,所以事务这个概念,再熟悉不过,它其实是一个数据库操作的概念,不管是ORM 还是JDBC数据源,它本身的针对数据库的操作都是SQL来实现的,
SQL中就提及到一个非常重要的概念,那就是事务,因为SQL命令CRUD数据库 很有可能会出错,所以必须得开始一个事务,然后在修改 查询之后,确定修改成功才提交事务,这个时候数据库才会把数据持久化到
硬盘中去,否则可以丢弃本次事务,修改不会被持久化到硬盘里面。
针对事务配置,我在慕课上看了视频,比较好理解 也比较容易配置的就是注解了,这里我贴上注解式的声明代码
package pw.jonwinters.demo4; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; //配置事务的 事务的传播行为 隔离级别 注销这个注解之后,此类中方法产生异常的话,事务不会被回滚,产生异常前针对数据库操作的方法会被持久化 @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT) public class AccountServiceImpl implements AccountService { //@Autowired private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } @Override public void transfer(final String out, final String in, final Double money) { accountDao.outMoney(out, money); //int result = 1/0; //注释掉了 除0的异常
accountDao.inMoney(in, money);//因为上面有注解,这个类会被代理,即使产生异常,上面那条针对数据库的操作也不会被持久化
} }
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager" />
上面是配置事务管理,然后开启默认注解驱动扫描,配置事务管理器 为DataSourceTransactionManager
标签:
原文地址:http://www.cnblogs.com/winters1992/p/5906456.html