一、什么是事务
- 事务是将一系列的sql操作封装在一个单元中,这个单元叫做事务,事务要嘛都做,要嘛不做,事务可以撤销。
- 我们在实际业务场景中,经常会遇到数据频繁修改读取的问题。在同一时刻,不同的业务逻辑对同一个表数据进行修改,这种冲突很可能造成数据不可挽回的错乱,所以我们需要用事务来对数据进行管理。
- 事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
-
)典型场景:银行转账有以下两个操作* lucy 转账 100 元 给 mary* lucy 少 100 , mary 多 100
二、事务的四个特性(ACID)
(1)原子性
(2)一致性
- 拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
(3)隔离性
(4)持久性
三、准备工作:搭建事务操作环境(以银行A给B转钱为例)
javaEE中一般分为三层:WEB层(视图操作)、Service层(业务逻辑操作)、Dao层(数据库操作)
1、创建一个表-book_account:
2、手动添加两条记录
3、创建 T_service,T_Dao和T_DaoImp,完成对象创建和注入关系
(1)T_service 注入属性:T_DaoImp对象,在T_DaoImp注入 JdbcTemplate,在 JdbcTemplate 注入 DataSource
(2)在T_DaoImp<