-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Fragen zu id-generator, lazy und cascade
PostPosted: Thu Jan 24, 2008 5:13 am 
Newbie

Joined: Tue Jan 08, 2008 11:45 am
Posts: 3
Hallo zusammen!

Ich habe einige generelle Fragen, bei denen ich aus der API nicht wirklich schlau werde:

Zum einen habe ich gelesen, dass bei bestimmten id-Generatoren und dem Aufruf
Code:
session.save(object);

die Objekte nicht direkt in der DB angelegt werden, sondern dass dies erst bei
Code:
session.flush();

geschieht.
Wie verhält es sich da mit der generator class="native"? Ist diese davon betroffen?

Dann habe ich noch eine Frage zu den Attributen lazy und cascade. Kann mir jemand ein einfaches Beispiel nennen, wann der Einsatz von lazy="false" Sinn macht? Und kann mir jemand vielleicht anhand eines Beispiels erklären, was die unterschiedlichen cascade-Optionen für Auswirkungen haben? Sind lazy="false" und cascade="all" äquivalent? Wie gesagt, aus der API werde ich nicht wirklich schlau, und beim trial-error-Verfahren bemerke ich keine oder kaum Unterschiede, die ich mir nicht wirklich erklären kann.

Danke und schöne Grüße,
Joseph


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 2:22 pm 
Beginner
Beginner

Joined: Thu Nov 13, 2003 4:12 am
Posts: 27
Generator Native ist natürlich davon betroffen. Erst wenn die Daten auf der DB liegen wird eine ID vergeben, also erst bei flush().

du scheinst lazy und cascade etws zu vermengen. Die beiden haben jedoch nichts miteinender zu tun. Lazy=false und cascade=all haben also nichts miteinander zu tun.
Am besten mal Doku lesen.

Hope that helps


Top
 Profile  
 
 Post subject: Re: Fragen zu id-generator, lazy und cascade
PostPosted: Sun Feb 03, 2008 4:06 am 
Newbie

Joined: Sun Feb 03, 2008 3:50 am
Posts: 1
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!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.