Spring 事务管理

何为事务,很多从只从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

posted on 2016-09-25 18:03  winters86  阅读(111)  评论(0编辑  收藏  举报