https://blog.csdn.net/qq_30659573/article/details/127966451

大事务引发的问题

image.png

pom依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.3.22</version>
</dependency>

解决方法

1. 少用@Transactional 注解


@Resource
private TransactionTemplate transactionTemplate;

public void save(final User user) {
    transactionTemplate.execute ((status) -> {
        //doSameThing...
        return Boolean.TRUE;
    });
}

2. 将查询(select)方法放到事务外


@Resource
private TransactionTemplate transactionTemplate;

public void save(final User user) {
    queryData1 ();
    queryData2 ();
    transactionTemplate.execute ((status) -> {
        addData1 ();
        updateData2 ();
        return Boolean.TRUE;
    });
}

如果就是要使用 @ T r a n s a c t i o n a l 注 解 , 该 怎 么 拆 分 呢

在 本类中 注入自己,再进行调用,避免事务失效