Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Spring, Hibernate, Blob lazy loading

Ich bin verwirrt. Emmanuel Bernard schrieb in ANN-418 das @Lob sind standardmäßig faul (d.h. Sie müssen nicht einmal den @Basic(fetch = FetchType.LAZY) verwenden Anmerkung).

Einige Benutzer berichten über das verzögerte Laden eines @Lob funktioniert nicht mit allen Treibern/Datenbanken .

Einige Benutzer berichten, dass es funktioniert, wenn Bytecode-Instrumentierung verwendet wird (javassit? cglib?).

Aber ich kann in der Dokumentation keinen eindeutigen Hinweis auf all dies finden.

Am Ende die empfohlene Problemumgehung ist die Verwendung einer "gefälschten" Eins-zu-Eins-Zuordnung anstelle von Eigenschaften. Entfernen Sie die LOB-Felder aus Ihrer vorhandenen Klasse, erstellen Sie neue Klassen, die auf dieselbe Tabelle, denselben Primärschlüssel und nur die erforderlichen LOB-Felder als Eigenschaften verweisen. Geben Sie die Zuordnungen als Eins-zu-eins, fetch="select", lazy="true" an. Solange sich Ihr übergeordnetes Objekt noch in Ihrer Sitzung befindet, sollten Sie genau das bekommen, was Sie wollen. (Transponieren Sie dies einfach in Anmerkungen).