1.事务的四大特性(ACID)
●原子性(Atomicity)
共生死,要么全部成功,要么全部失败!
●一致性(Consistency)
事务在执行前后,数据库中数据要保持一致性状态。(如转账的过程 账户操作后数据必须保持一致)
●隔离性(Isolation)
事务与事务之间的执行应当是相互隔离互不影响的。(多个角色对统一记录进行操作必须保证没有任何干扰) , 当然没有影响是不可能的,为了让影响级别降到最低,通过隔离级别加以限制:
- READ_ UNCOMMITTED (读末提交)
隔离级别最低的一种事务级别。在这种隔离级别下,会引发脏读、不可重复读和幻读。 - READ_ COMMITTED (读已提交)
读到的都是别人提交后的值。这种隔离级别下,会引发不可重复读和幻读,但避免了脏读。 - REPEATABLE_ READ (可重复读)
这种隔离级别下,会引发幻读,但避免了脏读、不可重复读。 - SERIALIZABLE (串行化)
最严格的隔离级别。在Serializable隔离级别下, 所有事务按照次序依次执行。脏读、不可重复读、幻读都不会出现。
●持久性(Durability)
事务提交完毕后,数据库中的数据的改变是永久的。
2.事务接口
Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。
Spring事务管理器的接口是org.springframework.transaction.PlatformTransactionManager.通过这个接口,Spring 为各个平台如JDBC、Hibernate 等都提供了对应的事务管理器
但是具体的实现就是各个平台自己的事情了。