Joseph23 wrote:
Kann mir jemand ein einfaches Beispiel nennen, wann der Einsatz von lazy="false" Sinn macht?
Stell Dir vor, Du hast eine Webanwendung, bei der Du eine Ergebnis-Tabelle auf einer JSP ausgibst. Wenn Du (mit lazy=true, also default) auf der JSP über diese Ergebnisliste iterierst, wird beim durchlaufen der Liste für jeden einzelnen Listeneintrag mindestens eine Datenbankanfrage durch Hibernate vorgenommen (je nach auszugebenden Attributen entsprechend mehrerer DB-Zugriffe). Stell Dir nun noch vor, du hast eine Assoziation in deiner Ergebnistabelle, musst also Daten aus mehreren Tabellen laden. Wenn hier auch Lazy=true angegeben ist, erhöht sich die Zahl der DB-Zugriffe auch hier entsprechend der Attribute in der assoziierten Tabelle.
Dieses Problem wird in der Literatur auch n+1 Select-Problem genannt.
Wenn Du also vorher weißt, dass Du alle immer alle Daten aus den Tabellen benötigst, kannst Du lazy=false setzen, und damit die Daten auf einmal laden. Deine Entities sind damit vollständig initialisiert!