1. transaction 事务 是什么?
事务是数据库中的一个执行单元,事务包含的操作动作,要么全部完成,要么完全不起作用。
2. transaction 事务 4个特性(ACID):
atomicity(原子性):事务是一个不可分割的执行单元,事务包含的操作动作,要么全部完成,要么完全不起作用。
consistency(一致性):事务完成时,所有的数据保持一致状态
isolation(隔离性):事务与其他事务应当隔离开来,可能存在许多事务处理相同的数据,导致数据损坏
durability(永久性):一旦事务提交,那么它对数据库中的数据的改变是永久性的。
3. transaction 事务作用?
保证数据的完整性和一致性。
4. spring中 事务管理(编程式事务管理和声明式事务管理):
编程式事务管理:分为2种方式:transactionTemplate、platformTransactionManager,需要额外的添加事务管理代码
声明式事务管理:它是将事务管理代码从业务方法中分离出来,spring 是通过 spring AOP 来支持声明式事务管理。
声明式事务管理 spring 官方示例:点击打开链接
@Transactional
public void book(String... persons) {
for (String person : persons) {
logger.info("Booking " + person + " in a seat...");
jdbcTemplate.update("insert into BOOKINGS(FIRST_NAME) values (?)", person);
}
}
This method is tagged with @Transactional, meaning that any failure causes the entire operation to roll back to its previous state,
and to re-throw the original exception. This means that none of the people will be added to BOOKINGS if one person fails to be added.
翻译:意味着,任何失败都将引起整个操作回滚到它之前的状态 并且 重新抛出原始异常,如果一个人添加失败,则没有人能被添加到BOOKINGS。