本文已使用 Google Cloud Translation API 自动翻译。
某些文档最好以原文阅读。
事务是任何数据库支持的应用程序的基本组成部分。简而言之,事务是一种将一个或多个数据库操作捆绑到一个原子单元中的方法。要么所有操作都成功,要么都不成功。
使用事务有很多好处,包括:
在本文中,我们将了解如何在 Spring Boot 和 Hibernate 中使用事务。我们将从快速概述不同类型的交易开始,然后我们将深入研究一些代码示例。
有两种主要类型的交易:本地交易和全球交易。
本地事务是由单一资源(如数据库)管理的事务。在本地事务中,所有操作都必须在同一个数据库上完成。如果任何操作失败,整个事务将回滚,数据库将保留其原始状态。
全局事务是由多个资源管理的事务,例如数据库和消息队列。全局事务比本地事务更复杂,但它们提供了即使其中一个资源出现故障也能够回滚整个事务的好处。
Spring Boot 为事务提供一流的支持。事实上,事务非常重要,如果 Spring Boot 应用程序检测到数据库没有配置事务,它就不会启动。
在 Spring Boot 中配置事务时,需要注意三点:
在 Spring Boot 中配置事务的最常见方法是使用 @Transactional 注解。可以将此注释添加到类或方法中。当添加到一个类中时,它适用于该类中的所有方法。添加到方法时,它仅适用于该方法。
@Transactional 注释有一些可选参数,可用于自定义其行为。其中最重要的是隔离级别。隔离级别用于控制数据库执行 ACID 属性的严格程度。
常用的隔离级别有四种:
为您的应用程序选择正确的隔离级别很重要。如果您选择的隔离级别过于严格,您可能会遇到性能问题。如果您选择的隔离级别太宽松,您可能会看到数据不一致。
Hibernate 是一种流行的 ORM 工具,通常与 Spring 结合使用。 Hibernate 也支持事务,它提供了几种不同的方式来配置它们。
在 Hibernate 中配置事务的最常见方法是使用 @Transactional 注释。可以将此注释添加到类或方法中。当添加到一个类中时,它适用于该类中的所有方法。添加到方法时,它仅适用于该方法。
@Transactional 注释有一些可选参数,可用于自定义其行为。其中最重要的是隔离级别。隔离级别用于控制数据库执行 ACID 属性的严格程度。
Hibernate 还支持程序化事务。这意味着您可以在代码中配置事务,而不是使用注释。通常不推荐这样做,因为它会使代码更难理解和维护。
在本文中,我们了解了如何通过 Spring Boot 和 Hibernate 使用事务。我们已经了解了如何使用 @Transactional 批注配置事务,还了解了如何根据需要选择正确的隔离级别。