一、事务的简介:
基本概念:
所谓的事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务与程序是两个不同的概念,一般来说一个程序中包含多个事务。
Sql中定义事务一般有三条:
- begin Transaction
- commit:提交,即提交事务的所有操作。
- rollback:回滚,即事务运行过程中遇到了故障,事务不能继续执行,系统将之前的操作全部撤销,回滚到事务开始时的状态。
ACID
- Atomicity–原子性:事务中的操作要么都做,要么都不做
- Consistency–一致性:事务的运行必须从一个状态转变到另一个状态。与原子性密切相关,
- Isolation–隔离性:一个事务的运行不能被其他事务干扰
- Durability–持久性:也称永久性,指一个事务一旦提交,它对数据库中的改变就应该是永久性的。
二、spring中事务的管理
(一)Spring 支持两种类型的事务管理:
编程式事务管理 :在编程的帮助下有管理事务,比较灵活,但却很难维护。
声明式事务管理 :从业务代码中分离事务管理,使用注释或 XML 配置来管理事务。
声明式事务管理比编程式事务管理更可取,尽管它不如编程式事务管理灵活,但它允许你通过代码控制事务。但作为一种横切关注点,声明式事务管理可以使用 AOP 方法进行模块化。Spring 支持使用 Spring AOP 框架的声明式事务管理。
(二)编程式事务管理
- Spring提供事务模板类:org.springframework.transaction.support.TrancationTemplate
- 事务管理器:org.springframework.jdbcdatasource.DatasourceTrancationManager