首页 > 代码库 > Spring 事务管理

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

Spring 事务管理