Spring事务管理的四种方式(以银行转账为例)
一、事务的作用
将若干的数据库操作作为一个整体控制,一起成功或一起失败。
原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:指事务前后数据的完整性必须保持一致。
隔离性:指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即时数据库发生故障也不应该对其有任何影响。
Spring提供了以下方法控制事务
a.编程式事务管理(基于Java编程控制,很少使用)–见demo1包
利用TransactionTemplate将多个DAO操作封装起来
二、示例(银行转账)
–编程式
/**
- @Description:转账案例的DAO层接口
/
public interface AccountDao {
/*
* @param out
* :转出账号
* @param money
* :转账金额
*/
public void outMoney(String out, Double money);
/**
*
* @param in
* :转入账号
* @param money
* :转账金额
*/
public void inMoney(String in, Double money);
}
/**
- @Description:转账案例的DAO层实现类
/
public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao {
/*- @param out
-
:转出账号
- @param money
-
:转账金额
@Override
public void outMoney(S