Mysql
 sql >> Base de données >  >> RDS >> Mysql

Printemps, Hibernation, Chargement paresseux de Blob

Je suis confus. Emmanuel Bernard a écrit dans ANN-418 ce @Lob sont paresseux par défaut (c'est-à-dire que vous n'avez même pas besoin d'utiliser le @Basic(fetch = FetchType.LAZY) annotation).

Certains utilisateurs signalent que le chargement paresseux d'un @Lob ne fonctionne pas avec tous les pilotes/bases de données .

Certains utilisateurs signalent que cela fonctionne lors de l'utilisation de instrumentation de bytecode (javassit? cglib?).

Mais je ne trouve aucune référence claire de tout cela dans la documentation.

À la fin, la solution de contournement recommandée est d'utiliser un "faux" mappage un à un au lieu de propriétés. Supprimez les champs LOB de votre classe existante, créez de nouvelles classes faisant référence à la même table, à la même clé primaire et uniquement aux champs LOB nécessaires en tant que propriétés. Spécifiez les mappages comme un à un, fetch="select", lazy="true". Tant que votre objet parent est toujours dans votre session, vous devriez obtenir exactement ce que vous voulez. (il suffit de transposer ceci aux annotations).