Maison >Java >javaDidacticiel >Que fait `spring.jpa.open-in-view=true` dans Spring Boot JPA et pourquoi est-il souvent déconseillé ?

Que fait `spring.jpa.open-in-view=true` dans Spring Boot JPA et pourquoi est-il souvent déconseillé ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-01 02:16:14993parcourir

What Does `spring.jpa.open-in-view=true` Do in Spring Boot JPA, and Why Is It Often Discouraged?

Comprendre l'objectif de la propriété spring.jpa.open-in-view=true

Dans la configuration JPA de Spring Boot, la propriété spring .jpa.open-in-view est rencontré. Cette propriété contrôle le comportement par défaut de gestion des exceptions de chargement différé dans une application Web. Pour comprendre efficacement son rôle, explorons ses implications.

Valeur par défaut de la propriété

  1. Est la véritable valeur par défaut de cette propriété si il n'est pas fourni du tout ?

    • Non, la valeur par défaut pour spring.jpa.open-in-view est faux s'il n'est pas explicitement défini.

Fonction de propriété

  1. Qu'est-ce que cela fait réellement ? Je n'ai trouvé aucune bonne explication à cela.

    • La propriété spring.jpa.open-in-view active ou désactive l'anti-modèle Open Session in View (OSIV). Lorsqu'il est activé, il force le contexte de persistance à rester ouvert pendant le rendu de la vue, permettant ainsi aux associations initialisées paresseusement d'être chargées sans déclencher une LazyInitializationException.

Relation à SessionFactory et EntityManagerFactory

  1. Est-ce que cela vous oblige à utiliser SessionFactory au lieu d'EntityManagerFactory ? Si oui, comment puis-je lui demander de me permettre d'utiliser EntityManagerFactory à la place ?

    • spring.jpa.open-in-view n'a aucun impact direct sur l'utilisation de SessionFactory ou EntityManagerFactory. . Les deux sont pris en charge dans l'implémentation JPA de Spring Boot.

Pourquoi OSIV est considéré comme problématique

L'anti-modèle OSIV est généralement déconseillé en raison à ses effets néfastes sur les performances et l'évolutivité :

  • Commit automatique après la couche de service transactions
  • Absence de limites de transaction
  • Problèmes de requête N 1
  • Augmentation de la durée de bail de la connexion à la base de données

Désactiver OSIV dans Spring Boot

🎜>

Pour désactiver OSIV dans Spring Boot, définissez spring.jpa.open-in-view sur false dans le fichier application.properties ou via une autre source de configuration.

Conclusion

Comprendre les implications de la propriété spring.jpa.open-in-view est crucial pour optimiser le performances et évolutivité de vos applications Spring Boot JPA. En désactivant OSIV le cas échéant, vous pouvez éviter les pièges courants associés à cet anti-modèle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn