web-dev-qa-db-fra.com

Quelle est cette propriété spring.jpa.open-in-view = true dans Spring Boot?

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!

76
Carlos Alberto

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.

32
dunni

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.

189
Vlad Mihalcea