Maison > base de données > tutoriel mysql > Pourquoi le chargement paresseux échoue-t-il pour les champs @Lob au printemps et en veille prolongée ?

Pourquoi le chargement paresseux échoue-t-il pour les champs @Lob au printemps et en veille prolongée ?

Susan Sarandon
Libérer: 2024-11-02 18:28:02
original
451 Les gens l'ont consulté

Why Does Lazy Loading Fail for @Lob Fields in Spring and Hibernate?

Problèmes de chargement paresseux avec @Lob dans Spring et Hibernate

Dans les applications Web utilisant Spring et Hibernate, les enregistrements de base de données contenant des données liées aux fichiers sont rendu sur une page Web. Bien que le processus fonctionne correctement lorsque les volumes de données sont modestes, des quantités de données excessives déclenchent une "OutOfMemoryError".

Comme étape de dépannage initiale, la définition des propriétés "blobField" sur "null" a résolu le problème de mémoire, ce qui implique que la paresse le chargement était inefficace malgré l'annotation @Basic(fetch=FetchType.LAZY).

Explications et solutions de contournement

Selon la documentation Hibernate, les champs @Lob sont intrinsèquement paresseux et ne ne nécessite pas d'annotations Lazy explicites. Cependant, un comportement incohérent a été signalé dans les bases de données et les pilotes.

Une solution implique des techniques d'instrumentation de bytecode telles que Javassist ou Cglib.

Solution recommandée

Pour Pour résoudre ce problème de manière fiable, il est suggéré de restructurer les mappages de données. Au lieu d'utiliser des propriétés, créez de « faux » mappages un-à-un. Supprimez les champs LOB de la classe primaire, établissez de nouvelles classes référençant la même table et la même clé primaire mais contenant uniquement les champs LOB nécessaires. Marquez ces mappages comme un à un, récupérez la sélection et paresseux vrai. Cette approche garantit un chargement paresseux pendant que l'objet parent reste dans la session.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal