关于spring:Spring-5-中文解析数据存储篇Spring框架的事物支持模型的优势

39次阅读

共计 3064 个字符,预计需要花费 8 分钟才能阅读完成。

Spring 外围篇章:

Spring 5 中文解析之外围篇 -IoC 容器

Spring 5 中文解析外围篇 -IoC 容器之依赖关系

Spring 5 中文解析外围篇 -IoC 容器之 Bean 作用域

Spring 5 中文解析外围篇 -IoC 容器之自定义 Bean 性质

Spring 5 中文解析外围篇 -IoC 容器之 BeanDefinition 继承与容器拓展点

Spring 5 中文解析外围篇 -IoC 容器之基于注解的容器配置

Spring 5 中文解析外围篇 -IoC 容器之类门路扫描和组件治理

Spring 5 中文解析外围篇 -IoC 容器之 JSR330 规范注解

Spring 5 中文解析外围篇 -IoC 容器之基于 Java 容器配置

Spring 5 中文解析外围篇 -IoC 容器之 Environment 形象

Spring 5 中文解析外围篇 -IoC 容器之 ApplicationContext 与 BeanFactory

Spring 5 中文解析外围篇 -IoC 容器之 Resources

Spring 5 中文解析外围篇 -IoC 容器之数据校验、数据绑定和类型转换

Spring 5 中文解析外围篇 -IoC 容器之 SpEL 表达式

Spring 5 中文解析外围篇 -IoC 容器之 AOP 编程(上)”)

Spring 5 中文解析外围篇 -IoC 容器之 AOP 编程(下)”)

Spring 5 中文解析外围篇 -IoC 容器之 Spring AOP API

Spring 测试篇章:

Spring 5 中文解析测试篇 -Spring 测试

Spring 5 中文解析外围篇 - 集成测试之概要和集成测试注解

Spring 5 中文解析外围篇 - 集成测试之 TestContext(上)”)

Spring 5 中文解析外围篇 - 集成测试之 TestContext(中)”)

Spring 5 中文解析测试篇 - 集成测试之 TestContext(下)”)

Spring 5 中文解析测试篇 -Spring MVC 测试框架

Spring 5 中文解析测试篇 -WebTestClient

残缺电子书地址

全面的事务反对是应用 Spring Framework 的最令人信服的起因之一。Spring 框架为事务管理提供了统一的形象,具备以下长处:

  • 跨域不同事物 API 的一致性编程模型,例如:Java 事物API(JTA)JDBCHibernate、Java 长久化API(JPA)
  • 反对申明式事物。
  • 比简单的事物 API 更简略的编程式事物治理。
  • 与 Spring 的数据存储形象优良集成。

上面的局部形容 Spring 框架的事物个性和技术:

  • Spring 框架的事务反对模型的长处形容了为什么你将应用 Spring 框架的事务形象而不是 EJB 容器治理的事务(CMT)或抉择通过诸如 Hibernate 之类的专有 API 驱动本地事务的起因。
  • 理解 Spring 框架事务形象概述了外围类,并形容了如何从各种起源配置和获取 DataSource 实例。
  • 将资源与事务同步形容了利用程序代码如何确保正确创立、重用和清理资源。
  • 申明式事务管理形容了对申明式事务管理的反对。
  • 编程式事务管理涵盖对编程式(即,显式编码)事务管理的反对。
  • 事务绑定事件形容了如何在事务中应用应用程序事件。

本章还探讨了最佳实际,应用程序服务器集成以及常见问题的解决方案。

1.1 Spring 框架的事物反对模型的劣势

传统上,Java EE 开发人员在事务管理中有两种抉择:全局或本地事务,这两者都有很大的局限性。下两节将回顾全局和本地事务管理,而后探讨 Spring 框架的事务管理反对如何解决全局和本地事务模型的局限性。

1.1.1 全局事物

全局事务使你能够应用多个事务资源,通常是关系数据库和音讯队列。应用服务器通过 JTA 治理全局事务,而 JTA 是一个繁琐的 API(局部是因为其异样模型)。此外,通常须要从 JNDI 派生 JTA UserTransaction,这意味着你还须要应用JNDI 能力应用 JTA。全局事务的应用限度了利用程序代码的任何潜在重用,因为JTA 通常仅在应用程序服务器环境中可用。

以前,应用全局事务的首选办法是通过 EJB CMT(容器治理的事务)。CMT 是申明式事务管理的一种模式(与编程式事务管理不同)。只管应用 EJB 自身必须应用 JNDI,然而EJB CMT 打消了与事务相干的 JNDI 查找的须要。它打消了大多数(但不是全副)编写 Java 代码来管制事务的需要。重大毛病是 CMTJTA和应用程序服务器环境相关联。而且,仅当抉择在 EJB 中(或至多在事务性 EJB 幕后)实现业务逻辑时,此性能才可用。EJB的毛病是如此之大,以至于这不是一个有吸引力的提议,特地是在面对申明性事务管理的引人注目的代替计划时。

1.1.2 本地事物

本地事务是特定于资源的,例如与 JDBC 连贯关联的事务。本地事务可能更易于应用,但有一个显著的毛病:它们不能跨多个事务资源工作。例如,应用 JDBC 连贯治理事务的代码不能在全局 JTA 事务中运行。因为应用程序服务器不参加事务管理,所以它无奈帮忙确保多个资源之间的正确性。(值得注意的是,大多数应用程序应用单个事务资源。)另一个毛病是本地事务侵入了编程模型。

1.1.3 Spring 框架的一致性编程模型

Spring 解决了全局事物和本地事物的缺点。它使应用程序开发人员能够在任何环境中应用统一的编程模型。你只需编写一次代码,即可从不同环境中的不同事务管理策略中受害。Spring 框架提供了申明式和编程式事务管理。大多数用户喜爱申明式事务管理,在大多数状况下咱们倡议这样做。

通过编程式事务管理,开发人员能够应用 Spring 框架事务形象,该形象能够在任何根底事务基础架构上运行。应用首选的申明式模型,开发人员通常编写很少或没有编写与事务管理相干的代码,因而,它们不依赖于 Spring 框架事务 API 或任何其余事务 API。

​ 你是否须要一个应用程序服务器来进行事务管理

Spring 框架的事务管理反对更改了无关企业 Java 应用程序何时须要应用服务器的传统规定。

特地是,你不须要纯正用于通过 EJB 进行申明式事务的应用程序服务器。实际上,即便你的应用服务器具备弱小的 JTA 性能,你也可能会决定,与 EJB CMT 相比,Spring 框架的申明式事务提供更多的性能和更高效的编程模型。

通常,仅当你的应用程序须要解决跨多个资源的事务时才须要应用程序服务器的 JTA 性能,而这并不是许多应用程序所必须的。许多高端应用程序应用单个高度可扩大的数据库(例如 Oracle RAC)来代替。独立事务管理器(例如Atomikos TransactionsJOTM)是其余抉择。当然,你可能须要其余应用程序服务器性能,例如 Java 音讯服务(JMS)和 Java EE 连接器体系结构(JCA)。

Spring 框架使你能够抉择何时将应用程序扩大到齐全加载的应用程序服务器。不再应用 EJB CMTJTA的惟一抉择是应用本地事务(例如 JDBC 连贯上的事务)编写代码,并且如果你须要将该代码在全局的、容器治理的事务中运行,则面临大量的工作。应用 Spring 框架,仅须要更改配置文件中的某些 Bean 定义(而不是代码)。

作者

集体从事金融行业,就任过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就任于某银行负责对立领取零碎建设。本身对金融行业有强烈的喜好。同时也实际大数据、数据存储、自动化集成和部署、散布式微服务、响应式编程、人工智能等畛域。同时也热衷于技术分享创建公众号和博客站点对常识体系进行分享。关注公众号:青年 IT 男 获取最新技术文章推送!

博客地址: http://youngitman.tech

CSDN: https://blog.csdn.net/liyong1…

微信公众号:

技术交换群:

正文完
 0