Chargement paresseux des champs Blob au printemps et en veille prolongée
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) :
<code class="xml"><bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="lobHandler" ref="lobHandler" /> </bean></code>
Classe d'entité (annotation pertinente) :
<code class="java">@Lob @Basic(fetch = FetchType.LAZY) @Column(name = "BlobField", columnDefinition = "LONGBLOB") @Type(type = "org.springframework.orm.hibernate3.support.BlobByteArrayType") private byte[] blobField;</code>
Malgré le marquage du blobField comme paresseux, vous rencontrez une OutOfMemoryError lors de la récupération de grandes quantités de données. Cela suggère que le mécanisme de chargement paresseux 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 paresseux des BLOB :
Pour résoudre votre problème, envisagez les étapes suivantes :
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!