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

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…

微信公众号:

技术交换群:

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据