一荣俱荣,一损俱损,很多复杂的操作我们可以把它看成是一个整体,要么同时成功,要么同时失败。
事务的四个特征ACID:
原子性(Atomic):表示组成一个事务的多个数据库的操作的不可分割的单元,只有所有的操作成功才算成功,整个事务提交,其中任何一个操作失败了都是导致整个所有操作失败,事务会回滚。
一致性(Consistentcy):事务操作成功后,数据库所处的状态和业务规则一致。如果A账户给B账户汇100,A账户减去100,B加上100,两个账户的总额是不变的。
隔离性(islation):在多个数据库的操作相同的数据并发时,不同的事务有自己的数据空间,事务与事务之间不受干扰(不是绝对的)。干扰程度受数据库或者操作事务的隔离级别来决定,隔离级别越高,干扰就越低,数据的一致性越好,并发性就越差。
持久性(Druability):一旦事务提交成功,数据就被持久化到数据库,不可以回滚。
2.spring使用注解对事务的控制
Spring 事务管理有两种方式:编程式事务管理、声明式事务管理
编程式事务管理通过TransactionTemplate手动管理事务,在实际应用中很少使用,我们来重点学习声明式事务管理
声明式事务管理有三种实现方式:基于TransactionProxyFactoryBean的方式、基于AspectJ的XML方式、基于注解的方式
2.在src目录下新建5个包 如图
dao :数据连接层,主要用于存放对数据进行操作的类
model:模型层,主要用于存放实体类
service:服务层,主要用于对数据连接层进行操作的一些服务类。
util:工具类,主要用于存储工具方法
test:用于测试类
3.在dao数据连接层,建立里与数据库操作的类与对应的接口 (Order 订单 ,detail订单明细)
3.1 定义detailDao接口 代码如下:
1 package com.spring.dao; 2 3 import com.spring.model.Detail; 4 import com.spring.model.Order; 5 6 public interface detailDao { 7 //保存订单明细 8 public void saveDetail(Detail detail); 9 10 11 12 }