编辑
2024-02-23
学习记录
00
请注意,本文编写于 405 天前,最后修改于 196 天前,其中某些信息可能已经过时。

目录

前提
为什么使用
使用

前提

TransactionTemplate是Spring框架中的一个类,用于编程式地管理事务。它允许开发者在方法内定义事务范围,以确保在方法执行期间的数据库操作要么全部成功提交,要么全部回滚。TransactionTemplate提供了一种更灵活、更细粒度的事务控制方式,适用于各种场景。

为什么使用

在Spring Boot中,通常有两种事务管理的方式:声明式事务管理和编程式事务管理。声明式事务管理是通过注解或XML配置来定义事务行为,而编程式事务管理是通过代码来实现事务控制。

使用TransactionTemplate的好处在于,它使得事务管理更加灵活,可以更细粒度地控制事务的开始、提交和回滚。这对于某些特定需求的应用程序非常有用,例如需要在方法内部处理多个事务的嵌套情况。

使用

有返回值

java
public class TestService { @Autowired private TransactionTemplate transactionTemplate; public void performTransaction() { // 在这里执行事务性操作 // 操作成功则事务提交,否则事务回滚 transactionTemplate.execute(status -> { try { // 事务性操作 // 如果操作成功,不抛出异常,事务将提交 } catch (Exception e) { // 如果操作失败,抛出异常,事务将回滚 status.setRollbackOnly(); } return null; }); } }

无返回值

java
public void update(String str) { /* * 执行无返回值的事务管理 */ transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) { try { // .... 业务代码 } catch (Exception e){ //回滚 transactionStatus.setRollbackOnly(); } } }); }

或者使用TransactionAspectSupport

java
public void update(String str) { /* * 执行切面方式的回滚 */ @Override @Transaction protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) { try { // .... 业务代码 } catch (Exception e){ //回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } }

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!