J'ai vu dans la documentation Spring Boot cette propriété pour la configuration JPA spring.jpa.open-in-view=true
. En passant, il a été défini sur true, est-ce donc la valeur par défaut?
Qu'est-ce que cela signifie vraiment? Je n'ai trouvé aucune explication pour ce comportement.
Devrait-on utiliser Hibernate SessionFactory
à la place de EntityManagerFactory
? Si oui, comment puis-je régler sur EntityManagerFactory
?
Appréciez toute aide.
Merci!
Cette propriété enregistre un OpenEntityManagerInViewInterceptor
, qui enregistre un EntityManager
dans le thread en cours, de sorte que vous aurez le même EntityManager
jusqu'à la fin de la demande Web. Cela n'a rien à voir avec un Hibernate SessionFactory
etc.
Malheureusement, OSIV (Open Session in View) est activé par défaut dans Spring Boot , et OSIV est vraiment une mauvaise idée du point de vue des performances et de l'évolutivité .
Donc, assurez-vous que dans le application.properties
fichier de configuration, vous avez l’entrée suivante:
spring.jpa.open-in-view=false
Cela désactivera OSIV afin que vous puissiez gérer le LazyInitializationException
de la bonne façon .
À partir de la version 2.0, les problèmes de démarrage Spring n avertissement lorsque OSIV sont activés par défaut, vous pouvez donc détecter ce problème bien avant qu'il n'affecte un système de production.