当前位置: 首页 > news >正文

济南网站设计开发企业系统查询官网

济南网站设计开发,企业系统查询官网,wordpress 相亲主题,免费建学校网站1.2 事务管理器TransactionManager org.springframework.transaction.TransactionManager没有任何方法,仅作为类型标识,通常使用接口org.springframework.transaction.PlatformTransactionManager,该接口提供三个方法处理事务。事务管理器的类图如下: 其中AbstractPlatfor…

1.2 事务管理器TransactionManager

org.springframework.transaction.TransactionManager没有任何方法,仅作为类型标识,通常使用接口org.springframework.transaction.PlatformTransactionManager,该接口提供三个方法处理事务。事务管理器的类图如下:

在这里插入图片描述

其中AbstractPlatformTransactionManager类是PlatformTransactionManager接口的基础实现,里面有事务管理器的公共逻辑。在不同场景使用的事务管理器在它的基础上完善细节。

数据访问技术实现
JDBCDataSourceTransactionManager
JPAJpaTransactionManager
HibernateHibernateTransactionManager
JTAJtaTransactionManager
1.2.1 TransactionStatus

org.springframework.transaction.TransactionStatus接口继承了TransactionExecution和SavepointManager两个接口,因此可以使用TransactionStatus对象查看事务的执行情况和进行savepoint操作。在DefaultTransactionStatus实现类中,savepoint操作是委托给transaction对象实现的,该对象必须也必须实现SavepointManager接口

在这里插入图片描述

1.3 AbstractPlatformTransactionManager

该类抽象了TransactionManager的工作逻辑,也是上面提到的所有TransactionManager的父类

1.3.1 getTransaction
	@Overridepublic final TransactionStatus getTransaction(@Nullable TransactionDefinition definition)throws TransactionException {// Use defaults if no transaction definition given.TransactionDefinition def = (definition != null ? definition : TransactionDefinition.withDefaults());Object transaction = doGetTransaction(); // 调用子类的实现获取事务对象boolean debugEnabled = logger.isDebugEnabled();// 判断当前是否已经存在事务。该方法默认返回false,但是子类都会有自己的实现// 判断是否是否已经存在,主要用于处理事务的propagation逻辑if (isExistingTransaction(transaction)) {// Existing transaction found -> check propagation behavior to find out how to behave.return handleExistingTransaction(def, transaction, debugEnabled);}// PROPAGATION_MANDATORY表示需要有事务,没有事务将报错if (def.getPropagationBehavior() == TransactionDefinition.PROPAGATION_MANDATORY) {throw new IllegalTransactionStateException("No existing transaction found for transaction marked with propagation 'mandatory'");}else if (def.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRED ||def.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRES_NEW ||def.getPropagationBehavior() == TransactionDefinition.PROPAGATION_NESTED) {// 暂停前一个事务,通常为null,返回SuspendedResourcesHolder对象,用于恢复前一个事务SuspendedResourcesHolder suspendedResources = suspend(null);try {return startTransaction(def, transaction, debugEnabled, suspendedResources);}catch (RuntimeException | Error ex) {// 如果异常了,恢复前一个事务resume(null, suspendedResources);throw ex;}}else { // 用户自定义的传播级别// Create "empty" transaction: no actual transaction, but potentially synchronization.if (def.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT && logger.isWarnEnabled()) {logger.warn("Custom isolation level specified but no actual transaction initiated; " +"isolation level will effectively be ignored: " + def);}boolean newSynchronization = (getTransactionSynchronization() == SYNCHRONIZATION_ALWAYS);return prepareTransactionStatus(def, null, true, newSynchronization, debugEnabled, null);}}

开始一个事务

/*** Start a new transaction.*/
private TransactionStatus startTransaction(TransactionDefinition definition, Object transaction,boolean debugEnabled, @Nullable SuspendedResourcesHolder suspendedResources) {// 默认为trueboolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);// 获取status对象DefaultTransactionStatus status = newTransactionStatus(definition, transaction, true
http://www.yayakq.cn/news/692124/

相关文章:

  • 济南 网站设计公司网站制作价格东莞
  • 手机网站制作教程下载小清新wordpress模板
  • 网站运营预期效果外包业务
  • 网上发布信息的网站怎么做桥头做网站
  • 档案信息网站建设工作经验网站空间怎么申请
  • 网站建设平台协议书wordpress能做论坛吗
  • 山东省建设工程招标中心网站湛江seo公司
  • 怎样通过阿里巴巴网站开发客户项目开发平台
  • 平台网站有哪些便宜的网站制作
  • 咨询服务公司网站建设天津西青区租房
  • 淘宝有WordPress网站搭建吗北京装饰公司排行 2019
  • 合作社做网站有用吗seo sem推广
  • 西安 医疗网站建设广州营销网站制作
  • 苏州 规划建设局网站原生小程序是什么
  • python 网站开发实战常州网站建设案例
  • 学院网站建设工作会议如何上传到网站根目录
  • 织梦wap手机网站模板做网站的财务需求
  • 免费网站建设建议网络游戏名字
  • 航运网站建设计划书深圳龙华区福城街道
  • wordpress手机站h5优化在线crm网站
  • 网站创建多少年了wordpress注册会员无法收到邮件
  • 深圳整站全网推广销售方案怎么做
  • 网站制作中文版山东网站建设公司推荐
  • 双流区的规划建设局网站个人网站可以做咨询吗
  • 北京网站设计制作教程wordpress ajax 分页插件
  • 建设网站企业哪家好龙岗做网站哪里找
  • 网站上的图片做多大网站建设听取需求
  • 购买保险的网站seo关键词的优化技巧
  • 网站制作合同网站开发脚本语言和数据库
  • 网站建设与网页设计pptwordpress自动易语言