Hibernate Lazy Loading funktioniert nicht mit Many-to-One-Mapping

8

Ich habe ein Leistungsproblem in meinem Viele-zu-Eins-Mapping. Wenn ich die SQL-Abfrage in der Protokolldatei debugge, ist die Prinzipalabfrage in Ordnung, aber nachdem ich eine andere Abfrage habe, die eine Viele-zu-Eins-Objektabbildung darstellt.

Entity.hbm.xml:

%Vor%

Objekt1.hbm.xml:

%Vor%

Objekt2.hbm.xml:

%Vor%

Abfrage HBM:

%Vor%

in pom.xml

%Vor%     
Ousmane MINTE 18.09.2014, 15:18
quelle

2 Antworten

2

Hast du es mit FetchMode.SELECT versucht, so?

%Vor%     
Petar Butkovic 18.09.2014, 15:41
quelle
3

Ihr Mapping scheint in Ordnung zu sein. Wie hier dokumentiert 5.1.1. Entität

Das Attribut <class> faul ist standardmäßig wahr

  • faul (optional): Lazy Fetching kann durch Setzen von lazy="false" deaktiviert werden.

Dasselbe gilt für <many-to-one> : 5.1.7.1 . Verwenden eines Fremdschlüssels oder einer Zuordnungstabelle faules -Attribut:

  • faul (optional - Standardwerte für Proxy): Standardmäßig werden Einzelpunkt-Verknüpfungen proxieziert. lazy="no-proxy" gibt an, dass die Eigenschaft langsam abgerufen werden soll, wenn auf die Instanzvariable zum ersten Mal zugegriffen wird. Dies erfordert Build-Time-Bytecode-Instrumentierung. lazy="false" gibt an, dass die Verknüpfung immer schnell abgerufen wird.

Also, wo ist das Problem?

Ich würde sagen, in Ihrem Debug-Fenster . Weil Sie einen Verweis auf Ihre Liste haben und Sie das Ergebnis sehen - in dem Moment, in dem es ausgeführt wird - wird die Referenz ebenfalls geladen. Faul - aber geladen. Das wollen wir eigentlich. Proxy - wenn zuerst tucked - zwingt die Last.

Versuchen Sie, es von der Uhr zu entfernen. Oder schließe die Session und setze sie dann in die Watch ... Du solltest sehen, dass die oben verwendete Abfrage - Referenzen nicht lädt ... nur wenn wirklich zugegriffen wird ... sogar über das Debug-Fenster

    
Radim Köhler 18.09.2014 15:33
quelle

Tags und Links