Java开发-面试题-0036-Spring 事务管理方式有哪些

Java开发-面试题-0036-Spring 事务管理方式有哪些

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

(技术)微信公众号:CodeZeng1998

(生活)微信公众号:好锅

其他平台:CodeZeng1998好锅

PS:之前遇见过的一家小公司的面试题,刚开始有点小懵逼,太久没背八股文了,突然有点忘记这块内容了,后续找面试官要了点提示才想起来。自己回答的时候顺便扩展了一些事务失效的情况,以及被延伸到Spring 代理方式相关的内容,因为回答事务失效的情况的时候项目里面一般使用注解 @Transactional 比较多,里面会涉及到 @Transactional 的实现是基于Spring AOP 实现的,所以当类的自调用的情况会导致事务失效,因为AOP是需要基于代理类来实现对应的功能,所以各位回答这道面试题的时候可以扩展说明这块内容。

Spring 的事务管理方式主要有两种:==编程式事务管理声明式事务管理。==这两种方式都有各自的应用场景和优缺点,Spring 强烈推荐使用 声明式事务管理,但了解编程式事务管理同样有助于理解事务的工作原理。下面是对这两种事务管理方式的详细说明。


1. 编程式事务管理

编程式事务管理是指通过手动控制事务的开始、提交和回滚。这种方式更灵活,因为开发者可以完全控制事务的生命周期和行为,通常是通过 Spring 提供的 TransactionTemplatePlatformTransactionManager 来实现。


编程式事务管理的实现方式:
  • TransactionTemplate:Spring 提供的一个方便的事务管理类,它简化了事务的控制,开发者只需定义事务逻辑,事务的开始、提交和回滚由 TransactionTemplate 处理。
  • PlatformTransactionManager:这是 Spring 中用于管理事务的核心接口,不同的事务管理器实现了这个接口,比如 DataSourceTransactionManager 用于 JDBC 事务管理,JpaTransactionManager 用于 JPA 事务管理等。通过这个接口,开发者可以手动控制事务。

编程式事务管理的优缺点:
  • 优点:
    • 灵活,适合需要手动控制事务的复杂场景。
    • 开发者可以精确控制事务边界(如部分提交、回滚)。
  • 缺点:
    • 代码侵入性强,事务代码和业务逻辑混在一起,难以维护。
    • 不适合大部分日常开发任务,容易导致代码重复。

使用示例:
@Autowired
private TransactionTemplate transactionTemplate;

public void someServiceMethod() {
   
   
    transactionTemplate.execute(status -> {
   
   
        try 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值