Chargement paresseux des champs Blob dans Spring et Hibernate
Lorsque vous traitez des données binaires volumineuses (BLOB) dans des tables de base de données, il est important d'optimiser leur récupération pour éviter les problèmes de performances et la consommation de mémoire. Une approche consiste à utiliser le chargement différé, qui permet de récupérer les données uniquement lorsque cela est nécessaire. Cependant, cette technique peut parfois poser des problèmes avec Hibernate et Spring.
Dans votre situation, vous avez configuré votre base de données, vos beans Spring et votre classe d'entité comme suit :
Configuration de la base de données (parties pertinentes) :
Classe d'entité (annotation pertinente) :
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "BlobField", columnDefinition = "LONGBLOB")
@Type(type = "org.springframework.orm.hibernate3.support.BlobByteArrayType")
private byte[] blobField;
Même si le blobField est marqué comme paresseux, vous rencontrez une erreur OutOfMemoryError lors de la récupération de grandes quantités de données. Cela suggère que le mécanisme de chargement différé ne se comporte pas comme prévu.
Sur la base de la documentation et des expériences des utilisateurs, voici quelques facteurs qui peuvent influencer le chargement différé des BLOB :
Pour résoudre votre problème, envisagez les étapes suivantes :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3