【发布时间】:2022-01-24 18:03:54
【问题描述】:
默认情况下,Spring Boot 使用视图模式中的打开会话。
是说每次用@Transactional注解的方法都是使用请求开始时创建的实体管理器还是每次都新建一个?
【问题讨论】:
标签: spring-boot hibernate
默认情况下,Spring Boot 使用视图模式中的打开会话。
是说每次用@Transactional注解的方法都是使用请求开始时创建的实体管理器还是每次都新建一个?
【问题讨论】:
标签: spring-boot hibernate
除非使用REQUIRES_NEW,否则事务将重新使用现有线程绑定EntityManager 或Session(取决于您使用JPA 还是普通Hibernate)。视图中的打开会话将在请求开始时打开并绑定一个。
所以它会重用当前线程绑定的一个。
对于普通的 Hibernate,您可以查看 SpringSessionContext class。对于 JPA,这有点隐藏在代理中,但您可以查看 EntityManagerFactoryUtils class。
【讨论】: