数据库事务是被视为单个工作单元的一系列操作。这些操作要么完全完成,要么根本不起作用。Spring事务管理是面向 RDBMS 的企业应用程序的重要组成部分,以确保数据的完整性和一致性。交易的概念可以用以下四个关键属性描述为ACID -,具体的千锋成都Java培训机构的小编给大家分析看看:
原子性- 事务应被视为单个操作单元,这意味着整个操作序列要么成功要么不成功。
Consistency - 这表示数据库引用完整性、表中唯一主键等的一致性。
隔离- 可能同时有许多事务处理具有相同的数据集。每个事务都应与其他事务隔离以防止数据损坏。
持久性- 一旦事务完成,该事务的结果必须是永久性的,并且不能由于系统故障而从数据库中删除。
一个真正的 RDBMS 数据库系统将保证每个事务的所有四个属性。使用 SQL 向数据库发出的事务的简单视图如下 -
使用开始事务命令开始事务。
使用 SQL 查询执行各种删除、更新或插入操作。
如果所有操作都成功,则执行提交,否则回滚所有操作。
Spring 框架在不同的底层事务管理 API 之上提供了一个抽象层。Spring 的事务支持旨在通过向 POJO 添加事务功能来提供 EJB 事务的替代方案。Spring 支持编程式和声明式事务管理。EJB 需要应用程序服务器,但无需应用程序服务器即可实现 Spring 事务管理。
本地与全球交易
本地事务特定于单个事务资源,例如 JDBC 连接,而全局事务可以跨越多个事务资源,例如分布式系统中的事务。
本地事务管理在应用程序组件和资源位于单个站点的集中式计算环境中非常有用,并且事务管理仅涉及在单台机器上运行的本地数据管理器。本地事务更容易实现。
在所有资源分布在多个系统上的分布式计算环境中,需要全局事务管理。在这种情况下,需要在本地和全局级别进行事务管理。分布式或全局事务跨多个系统执行,其执行需要全局事务管理系统和所有相关系统的所有本地数据管理器之间的协调。
程序化与声明式
Spring 支持两种类型的事务管理 -
程序化事务管理- 这意味着您必须借助编程来管理事务。这为您提供了极大的灵活性,但很难维护。
声明式事务管理- 这意味着您将事务管理与业务代码分开。您只使用注释或基于 XML 的配置来管理事务。
声明式事务管理比程序化事务管理更可取,尽管它不如程序化事务管理灵活,后者允许您通过代码控制事务。但是作为一种横切关注点,声明式事务管理可以通过 AOP 方法进行模块化。Spring 通过 Spring AOP 框架支持声明式事务管理。
Spring事务抽象
Spring 事务抽象的关键由org.springframework.transaction.PlatformTransactionManager接口定义,如下所示 -
该TransactionDefinition的是Spring中的事务支持的核心接口,并将其定义如下
以下是隔离级别的可能值
以下是传播类型的可能值
该的TransactionStatus接口为处理事务的代码来控制事务执行和查询事务状态的简单方法。
以上就是千锋成都Java培训班的小编关于“Spring的事务管理”的介绍,如果大家对此比较感兴趣,想了解更多相关知识,可以关注一下千锋成都Java培训学习课程,里面的内容全面细致,由浅到深,适合没有基础的小伙伴学习,希望对大家能够有所帮。
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱