Java后台-Spring 事务管理-2020-12-18

2020-12-21  本文已影响0人  勇往直前888

事务管理

一个数据库事务是一个被视为单一的工作单元的操作序列。这些操作应该要么完整地执行,要么完全不执行。事务管理是一个重要组成部分,RDBMS 面向企业应用程序,以确保数据完整性和一致性。事务的概念可以描述为具有以下四个关键属性说成是 ACID:

原子性: 事务应该当作一个单独单元的操作,这意味着整个序列操作要么是成功,要么是失败的。

一致性: 这表示数据库的引用完整性的一致性,表中唯一的主键等。

隔离性: 可能同时处理很多有相同的数据集的事务,每个事务应该与其他事务隔离,以防止数据损坏。

持久性: 一个事务一旦完成全部操作后,这个事务的结果必须是永久性的,不能因系统故障而从数据库中删除

事务抽象

Spring事务管理的五大属性:隔离级别、传播行为、是否只读、事务超时、回滚规则

相关数据结构

public interface PlatformTransactionManager {
   // 根据指定的传播行为,该方法返回当前活动事务或创建一个新的事务。
   TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;

   // 该方法提交给定的事务和关于它的状态。
   void commit(TransactionStatus status) throws TransactionException;

   // 该方法执行一个给定事务的回滚。
   void rollback(TransactionStatus status) throws TransactionException;
}
public interface TransactionDefinition {
   // 该方法返回传播行为。Spring 提供了与 EJB CMT 类似的所有的事务传播选项。
   int getPropagationBehavior();

   // 该方法返回该事务独立于其他事务的工作的程度。
   int getIsolationLevel();

   // 该方法返回该事务的名称。
   String getName();

   // 该方法返回以秒为单位的时间间隔,事务必须在该时间间隔内完成。
   int getTimeout();

   // 该方法返回该事务是否是只读的。
   boolean isReadOnly();
}
public interface TransactionStatus extends SavepointManager {
   // 在当前事务是新的情况下,该方法返回 true。
   boolean isNewTransaction();

   // 该方法返回该事务内部是否有一个保存点,也就是说,基于一个保存点已经创建了嵌套事务。
   boolean hasSavepoint();

   // 该方法设置该事务为 rollback-only 标记。
   void setRollbackOnly();

   // 该方法返回该事务是否已标记为 rollback-only。
   boolean isRollbackOnly();

   // 该方法返回该事务是否完成,也就是说,它是否已经提交或回滚。
   boolean isCompleted();
}

隔离级别的可能值:

传播类型的可能值:

参考文章

Spring 事务管理

上一篇下一篇

猜你喜欢

热点阅读