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