首页 > 其他分享 >spring事务

spring事务

时间:2023-07-17 21:57:07浏览次数:492  
标签:事务管理 事务 配置 spring Transactional 编程 Spring

Spring事务是Spring框架提供的一种用于管理数据库事务的机制。通过Spring事务管理,可以实现对数据库操作的事务性控制,保证数据的一致性和完整性。

Spring事务的特点和优势:

  • 声明式事务管理:Spring提供了声明式事务管理,可以通过配置简单的注解或XML配置来管理事务,避免了手动编写事务管理代码的复杂性。

  • 编程式事务管理:除了声明式事务管理,Spring还支持编程式事务管理,可以在代码中显式地控制事务的起始、提交、回滚等操作。

  • 支持多种事务管理策略:Spring支持多种事务管理策略,包括本地事务、JDBC事务、JTA事务等,可以根据应用的需求选择合适的事务管理策略。

  • 声明式回滚:可以通过配置事务注解的rollbackFor属性来指定特定异常发生时回滚事务,使得事务管理更加灵活。

  • 与Spring框架集成:Spring事务与其他Spring框架组件无缝集成,可以方便地与Spring的依赖注入、AOP等功能结合使用。

使用Spring事务的基本步骤如下:

  1. 配置数据源:在Spring配置文件中配置数据库连接池和数据源。

  2. 配置事务管理器:配置事务管理器,可以选择适合的事务管理器,如DataSourceTransactionManager、JpaTransactionManager等。

  3. 配置事务通知:在需要事务管理的方法上,添加@Transactional注解来声明事务。也可以通过XML配置来声明事务通知。

  4. 执行业务逻辑:在业务方法中执行数据库操作,Spring会根据事务配置来管理事务。

以下是一个简单的示例代码,演示了如何在Spring中配置和使用事务:

Copy code
@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    @Transactional
    public void saveProduct(Product product) {
        productRepository.save(product);
    }

    @Transactional(readOnly = true)
    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }

    @Transactional
    public void deleteProduct(Long id) {
        productRepository.deleteById(id);
    }
}

在上述代码中,通过@Transactional注解标记了三个方法,分别对应保存、查询和删除产品的操作。这样,Spring会在执行这些方法时自动管理事务的起始、提交和回滚,确保数据的一致性。


当你使用Java配置(JavaConfig)替代XML配置时,你可以使用@EnableTransactionManagement注解来启用事务管理,而无需使用tx:annotation-driven元素。同时,你需要在Java配置类中定义数据源和事务管理器的bean,并使用@Transactional注解来声明事务的方法。

编程式事务

编程式事物管理的定义: 在代码中显式挪用 beginTransaction()、commit()、rollback()等事务治理相关的方法这就是编程式事务管理。Spring 对事物的编程式管理有基于底层 API 的编程式管理和基于 TransactionTemplate 的编程式事务管理两种方式
基于底层 API 的编程式管理: 凭证 PlatformTransactionManager 、 TransactionDefinition 和TransactionStatus 三个焦点接口,来实现编程式事务管理:

标签:事务管理,事务,配置,spring,Transactional,编程,Spring
From: https://www.cnblogs.com/yliunyue/p/17561353.html

相关文章

  • springcloud是什么
    1、它其实spring公布的微服务开发的一套模式或者说规范2、比如通常来说,它规定包含注册中心、网关、配置中心这套基本组件,它还需要rpc远程调用组件包括feign、dubbo、grpc等等,以及他们的负载均衡策略和熔断措施3、它还可以包含健康度监控、性能监控和链路追踪等等 ......
  • springboot下使用rabbitMQ之开发配置方式(一)
    springboot下使用rabbitMQ之开发配置方式(一)距离上次发布博客已经小一年了,这次...嗯,没错,我又回来啦.........
  • Spring 6.x源码编译
    环境Windows10IntelliJIDEA2023.1.2(UltimateEdition)jdk-17.0.7Spring6要求jdk17+创建init.grade文件相当于maven的settings.xml,全局加速拉取依赖allprojects{repositories{mavenLocal()maven{url"https://maven.aliyun.com/reposit......
  • 三级缓存---解决 Spring 循环依赖
    1.循环依赖1.1什么是循环依赖首先,什么是循环依赖?这个其实好理解,就是两个Bean互相依赖,类似下面这样:"""@ServicepublicclassAService{ @Autowired BServicebService;}@ServicepublicclassBService{ @Autowired AServiceaService;}"""AService和BServ......
  • Spring整合Mybatis
    一.引入Spring等相关依赖<dependencies><!--版本建议换成提示的更安全的版本--><!--mybatis插件--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId>......
  • Spring循环依赖
     转自:https://blog.csdn.net/yueyezhufeng/article/details/126371612?ops_request_misc=&request_id=&biz_id=102&utm_term=Spring%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8%E6%B5%81%E7%A8%8B%E5%9B%BE&utm_medium=distribute.pc_search_result.none-task-blog-......
  • 【Spring】零散
    如何扩展XML自定义标签:参考springcore.pdf中10.2XMLSchemaAuthoring章节(含具体样例)1.AuthoranXMLschematodescribeyourcustomelement(s).2.CodeacustomNamespaceHandlerimplementation.3.CodeoneormoreBeanDefinitionParserimplementations(thisiswh......
  • Spring框架中的设计模式(重点学习!!!)
    Spring中的设计模式Spring框架中用到的设计模式有很多,以下是一些常见的设计模式:依赖注入(DI)和控制反转(IoC):这是Spring框架最核心的设计模式,它允许开发人员将对象之间的依赖关系从代码中抽离出来,由Spring容器负责管理和注入对象之间的依赖关系。工厂模式:Spring框架中的BeanFactor......
  • Spring项目中策略模式使用
    一、策略模式定义策略模式(StrategyPattern)是行为型策略模式当中的一种,定义一系列算法,将每个算法封装到具有公共接口的一系列策略类中,(可以是抽象类,也可以是接口),从而使他们可以相互替换,让算法可在不影响客户端的情况下发生变化,作用:将算法的责任和本身进行解耦,使得:1、算法可独立......
  • SpringMVC文件上传
    相关依赖使用SpringMVC提供的文件上传需要在项目中加入两个jar包,对应的maven的依赖分别是:commons-io和commons-fileupload<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dep......