Spring Boot不加@Transactional会开启事务吗?

如题,网上说Spring Boot默认开启事务,是不是即使不加@Transactional注解,框架也自动帮我们开启了事务,如果开启了,事务的隔离级别如何呢?另外实际生产环境什么时候需要用到事务呢,隔离级别该如何设置呢?

阅读 10k
1 个回答

是的,在执行数据库写操作时 spring boot 框架一般会默认开启。

但是不加 @Transactional 的情况下,事务不好控制。

默认的隔离级别应该是 READ_COMMITTED

在生产环境中,只要涉及到写操作,都会涉及到事务,在生产环境中,所有涉及到写操作的方法上,都应该加上 @Transactional,除非你很明确的知道自己在做什么。

例如

@Transactional // 就算是只写一次,也建议加上
void wirte1() {
// write a table
}

// 多次写更应该加上,除非你知道自己在做什么
// 如果不加,出现几次写操作,框架就会自动打开几次事务。
@Transactional 
void wirte1() {
// write a table
// write other table
}

隔离级别该如何设置,如果你对这个这个问题有疑问,那么建议不要做任何设置。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏