使用@Transactional注解过程中产生锁
原因:@Transactional是Spring框架提供的注解,用于注解类或方法,表示此类或方法需要在一个事务内执行。
1、一个事务中对同一张表进行了多次操作
2、在一个事务中对同一张表进行了读操作(select语句)和写操作(insert、update、delete语句)当出现这种情况时,可能会导致表被锁住,其他事务无法对它进行操作。如果需要并发地对表进行读写操作,这就会成为一个问题。
解决:
1、将读操作和写操作放在不同的事务中执行(方法拆分,使用多个@Transactional)
2、调整事务隔离级别(@Transactional(isolation = Isolation.READ_UNCOMMITTED))
3、插入、修改、删除操作进行异常捕获,然后手动设置事务回滚(不使用@Transactional注解)