@Transactional的readOnly、timeout

1、@Transactional的readOnly

在使用@Transactional注解的时候,有一个属性是readOnly,默认值是false

readOnly的意思就是当前的方法是只读的,也就是说当前的方法中没有需要处理事务(insert,update,delete的操作。则可以加上readOnly=true

使用它的好处是Spring会把你优化这方法,使用了readOnly=true,也就是使用了一个只读的connection。效率会高很多

例如:如下方法,userAdd肯定用到了insert操作。此时加上readOnly=true的话则会报错,插入不成功。

1
2
3
4
@Transactional(readOnly=true)
public void userAdd(User user) {
    userDao.userAdd(user);
}

readOnly的使用场景:

1、只有查询操作的方法上(查询量比较大)

2、确保当前方法不会出现insert,update,delete情况时,可以使用readOnly=true

3、防止当前方法会出现insert,update,delete

2、@Transactional的timeout

事务的超时时间:Transaction时间太长的话,将它停止掉。默认-1





原文地址:https://www.cnblogs.com/meet/p/4762441.html