/ / quelle est la différence entre lazy = “true” et fetch = “select” en veille prolongée? - hibernation, évaluation paresseuse

Quelle est la différence entre lazy = "true" et fetch = "select" en veille prolongée? - Hibernate, paresseux-évaluation

le lazy=true attribut est activer le chargement différé des collections parent et enfant et même chose fetch="select" attribut. Y a-t-il une différence entre lazy="true" et fetch="select" en hibernation ?.

Réponses:

21 pour la réponse № 1

Oui.

le lazy attribut dit hiberner quand chercher les enfants.

le fetch attribut dit hiberner Comment chercher les enfants.

Quand tu dis

L'attribut lazy = true permet le chargement paresseux du parent et de l'enfant. collections et même chose fetch = "select" attribut

c'est carrément incorrect. La stratégie d’extraction sélective n’est PAS la même chose que d’arrêter le chargement paresseux. En réalité, de la documentation

Sélectionnez chercher: un second SELECT est utilisé pour récupérer le fichier associé. entité ou collection. Sauf si vous désactivez explicitement la récupération paresseuse par en spécifiant lazy = "false", cette seconde sélection ne sera exécutée que lorsque vous accédez à l'association.


13 pour la réponse № 2

Quand on dit fetch="select", il lancera toujours des requêtes distinctes pour récupérer les objets d'association, même s'il est lazy ="false".

Mais quand on dit lazy ="true"Cela signifie qu'il récupérera les objets d'association dans une requête distincte, mais pas au moment du chargement de l'objet, mais au premier accès à l'association. Nous pouvons le faire en disant list().size().

Quand on dit fetch="join" il lancera toujours une requête unique pour extraire les objets d'association de la base de données.


1 pour la réponse № 3

Pour résoudre n + 1, sélectionnez le problème pour n requêtes.(relation parent-enfant) en veille prolongée, nous utilisons fetch = "join" au lieu de fetch = "select". Le paramètre différé décide de charger ou non les objets enfants lors du chargement de l'objet parent. Ce fichier de mappage d'hibernation respectif de la classe parente doit être paramétré.Lazy = true (signifie ne pas charger l'enfant) Par défaut, le chargement différé des objets enfants est true. .