抽象基类实现SPRing的标准事务工作流,担任基础混凝土平台事务管理器如JtaTransactionManager和DataSourceTransactionManager。
这个基类提供了以下工作流程处理:
确定如果有现有的事务;应用适当的传播行为;如果有必要暂停和恢复事务;提交时检查rollback-only标记;应用适当的修改当回滚(实际回滚或设置rollback-only);触发同步回调注册(如果事务同步是激活的)子类必须实现特定的模板方法对特定状态的事务,例如:.: begin,suspend, resume, commit, rollback。最重要的是必须提供的抽象和具体实现;其余,提供默认值,所以最重要的是可选的。
事务同步对于注册回调是一种通用的机制,在事务完成时调用,这主要是内部使用的数据访问JDBC支持类,Hibernate,JDO等运行时在一个JTA事务,注册资源打开关闭在事务完成的事务时间内,允许例如重用相同的Hibernate会话内的事务,相同的机制也可以用于自定义同步需要在应用程序中,这个类是可序列化的,以允许序列化的事务策略以及代理事务拦截器,这由子类决定如果他们想使他们的状态是可序列化的。他们应该实现java . io .可串行化的标记接口在这种情况下,和一个潜在的私人readObject()方法(根据Java序列化规则)如果他们需要恢复任何瞬态。
内部类 Summary | |||
protected static class | AbstractPlatformTransactionManager.SuspendedResourcesHolder 暂停资源的持有者. | ||
字段 Summary | |||
protected Log | logger 瞬态优化序列化 | ||
static int | SYNCHRONIZATION_ALWAYS 总是激活事务同步,甚至为“empty”的事务,由于没有现有后端事务的传播支持 | ||
static int | SYNCHRONIZATION_NEVER 永远不激活事务同步,即使实际的交易 | ||
static int | SYNCHRONIZATION_ON_ACTUAL_TRANSACTION 只为实际的事务 激活事务同步,不为空的,结果从没有现有后端事务的PROPAGATION_SUPPORTS. | ||
Method Summary | |||
void | commit(TransactionStatus status) 这个实现提交处理现有事务和参与编程回滚的请求 | ||
protected int | determineTimeout(TransactionDefinition definition) 使用给定的定义确定实际的超时. | ||
protected abstract void | doBegin(Object transaction,TransactionDefinition definition) 开始一个新事务,根据给定的语义 | ||
protected void | doCleanupAfterCompletion(Object transaction) 事务完成后清理资源. | ||
protected abstract void | doCommit(DefaultTransactionStatus status) 执行给定一个事务的实际提交. | ||
protected abstract Object | doGetTransaction() 返回一个事务对象的当前事务的状态 | ||
protected void | doResume(Object transaction,Object suspendedResources) 恢复当前事务的资源. | ||
protected abstract void | doRollback(DefaultTransactionStatus status) 执行一个给定的实际回滚事务. | ||
protected void | doSetRollbackOnly(DefaultTransactionStatus status) 设置给定的事务rollback-only. | ||
protected Object | doSuspend(Object transaction) 暂停当前事务的资源. | ||
int | getDefaultTimeout() 返回默认的超时,这事务管理器应该应用的,如果没有超时在指定事务级别,在几秒钟内 | ||
TransactionStatus | getTransaction(TransactionDefinition definition) 这个实现处理传播行为. | ||
int | getTransactionSynchronization() 返回如果这个事务管理器应该激活线程事务同步支持 | ||
protected void | invokeAfterCompletion(List synchronizations, int completionStatus) Actually invoke the afterCompletion methods of the given 实际调用afterCompletion给定Spring TransactionSynchronization对象的方法 | ||
protected boolean | isExistingTransaction(Object transaction) Check if the given transaction object indicates an existing 检查给定的事务对象是否表明现有的事务(也就是说,一个事务已经开始) | ||
boolean | isFailEarlyOnGlobalRollbackOnly() 返回是否早期失败的事务被全局标记为rollback-only | ||
boolean | isGlobalRollbackOnParticipationFailure() 返回是否全局标记已存在的事务为rollback-only,后参与事务失败 | ||
boolean | isNestedTransactionAllowed() 返回是否允许嵌套的事务. | ||
boolean | isRollbackOnCommitFailure() 返回是否应该进行做回滚当调用commit失败的 | ||
protected DefaultTransactionStatus | newTransactionStatus(TransactionDefinition definition,Object transaction, boolean newTransaction, boolean newSynchronization, boolean debug,Object suspendedResources) 创建一个新的TransactionStatus给定参数,初始化事务同步 | ||
protected void | registerAfterCompletionWithExistingTransaction(Object transaction,List synchronizations) 注册给定的事务列表同步与现有的事务. | ||
protected void | resume(Object transaction,AbstractPlatformTransactionManager.SuspendedResourcesHolder resourcesHolder) 恢复给定的事务 | ||
void | rollback(TransactionStatus status) 参与现有事务的具体回滚实现. | ||
void | setDefaultTimeout(int defaultTimeout) 设置默认的时间超时,如果在事务级别没有具体指导,在几秒钟范围内 | ||
void | setFailEarlyOnGlobalRollbackOnly(boolean failEarlyOnGlobalRollbackOnly) 是否fail early当一个事务被标记为全局 rollback only | ||
void | setGlobalRollbackOnParticipationFailure(boolean globalRollbackOnParticipationFailure) 是否全局设置已存在的事务为rollback-only当参与事务失败. | ||
void | setNestedTransactionAllowed(boolean nestedTransactionAllowed) 设置是否允许嵌套事务. | ||
void | setRollbackOnCommitFailure(boolean rollbackOnCommitFailure) 设置是否应该执行doRollback doCommit调用失败. | ||
void | setTransactionSynchronization(int transactionSynchronization) 设置当这个事务管理器应该激活线程绑定的事务同步支持. | ||
void | setTransactionSynchronizationName(String constantName) 设置事务同步通过相应的常数在这个类的名称,例如: | ||
protected boolean | shouldCommitOnGlobalRollbackOnly() 是否回在被全局标记为rollback-only的事务上调用doCommit。 | ||
protected AbstractPlatformTransactionManager.SuspendedResourcesHolder | suspend(Object transaction) 暂停给定的事务. | ||
protected void | triggerBeforeCommit(DefaultTransactionStatus status) 触发beforeCommit回调. | ||
protected void | triggerBeforeCompletion(DefaultTransactionStatus status) 触发beforeCompletion回调. | ||
protected boolean | useSavepointForNestedTransaction() 返回是否使用嵌套事务的保存点. |
新闻热点
疑难解答