java springboot Spring Boot中的spring.jpa.open-in-view=true属性是什么?



springboot jpa dialect (2)

我在Spring Boot文档中看到了JPA配置 spring.jpa.open-in-view=true 此属性。 顺便说一句,它被设置为true,所以它是默认值吗?

到底是什么意思 对于此行为,我没有找到任何解释。

应该使用Hibernate SessionFactory 代替 EntityManagerFactory 吗? 如果是,如何设置 EntityManagerFactory

感谢任何帮助。

谢谢!


Answer #1

不幸的是, 在Spring Boot中默认启用了OSIV(视图中的Open Session) 从性能和可伸缩性的角度来看 OSIV确实不是一个好主意

因此,请确保在 application.properties 配置文件中,您具有以下条目:

spring.jpa.open-in-view=false

这将禁用OSIV,以便您可以 正确处理 LazyInitializationException

从版本2.0开始,默认情况下启用 OSIV时 ,Spring Boot会发出 警告 ,因此您可以在此问题影响生产系统很长时间之前就发现它。


Answer #2

此属性将注册一个 OpenEntityManagerInViewInterceptor ,该 OpenEntityManagerInViewInterceptorEntityManager 注册到当前线程,因此在Web请求完成之前,您将拥有相同的 EntityManager 。 它与Hibernate SessionFactory 等无关。





spring-data