spring事务策略

Spring事务策略

Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。

    DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。

    具体如下图:


统观spring事务,围绕着两个核心PlatformTransactionManager和TransactionStatus 


public interface PlatformTransactionManager{

  TransactionStatue getTransaction(TransactionDefinition definition) throws TransactionException;
  void commit(TransactionStatus status) throws TransactionException;
  void rollback(TransactionStatus status) throws TransactionException;
}

2.使用PlatformTransactionManager直接管理事务。如下片段:

DefaultTransactionDefinition def= new DefaultTransactionDefinition();           
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); 
TransactionStatus status = transactionManager.getTransaction(def); 
try{                                 
   transactionManager.commit(status); 
}catch(..){                                                   
    transactionManager.rollback(status); 
} 
那么PlatformTransactionManager以什么依据处理事务呢?  是TransactionStatus 

public interface TransactionStatus extends SavepointManager {
 boolean isNewTransaction();
 boolean hasSavepoint();
 void setRollbackOnly();
 boolean isRollbackOnly();
 void flush();
 boolean isCompleted();
}




你可能感兴趣的:(spring事务策略)