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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本章节主要描述: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框架的事物特性和技术:

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

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/liyong1028826685

微信公众号:

技术交流群:

目录
相关文章
|
7天前
|
人工智能 数据可视化 前端开发
简化开发流程 低代码技术优势全解析
低代码开发通过可视化界面、预建模板和拖放操作简化开发流程,加速企业数字化转型。Zoho Creator等平台提供丰富模板、自动化工作流和第三方集成,降低开发成本,提高效率,成为未来应用开发趋势。
15 1
|
10天前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
27 3
|
17天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
75 3
|
5天前
|
搜索推荐 Java Spring
Spring Filter深度解析
【10月更文挑战第21天】Spring Filter 是 Spring 框架中非常重要的一部分,它为请求处理提供了灵活的控制和扩展机制。通过合理配置和使用 Filter,可以实现各种个性化的功能,提升应用的安全性、可靠性和性能。还可以结合具体的代码示例和实际应用案例,进一步深入探讨 Spring Filter 的具体应用和优化技巧,使对它的理解更加全面和深入。
|
6天前
|
人工智能 数据挖掘 大数据
排队免单与消费增值模式:融合玩法与优势解析
排队免单模式通过订单排队、奖励分配、加速与退出机制等,结合消费增值模式中的积分制度、利润入池与积分增值等,共同提升消费者参与度和忠诚度,促进商家销售增长。具体包括订单自动排队、大单拆小单、异业联盟、线上线下融合及数据分析优化等进阶玩法,以及积分增值模型演算,形成一套完整的消费者激励体系。
|
18天前
|
Java Spring
Spring底层架构源码解析(三)
Spring底层架构源码解析(三)
|
18天前
|
XML Java 数据格式
Spring底层架构源码解析(二)
Spring底层架构源码解析(二)
|
23天前
|
人工智能 缓存 Java
深入解析Spring AI框架:在Java应用中实现智能化交互的关键
【10月更文挑战第12天】Spring AI 是 Spring 框架家族的新成员,旨在满足 Java 应用程序对人工智能集成的需求。它支持自然语言处理、图像识别等多种 AI 技术,并提供与云服务(如 OpenAI、Azure Cognitive Services)及本地模型的无缝集成。通过简单的配置和编码,开发者可轻松实现 AI 功能,同时应对模型切换、数据安全及性能优化等挑战。
|
13天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
40 0
|
13天前
|
分布式计算 Java 应用服务中间件
NettyIO框架的深度技术解析与实战
【10月更文挑战第13天】Netty是一个异步事件驱动的网络应用程序框架,由JBOSS提供,现已成为Github上的独立项目。
28 0

推荐镜像

更多