Place.hbm.xml
<bag
name="events"
inverse="true"
lazy="true"
cascade="all">
<key column="PLACE_ID"/>
<one-to-many class="place.model.Event"/>
</bag>
Event.hbm.xml
<many-to-one
name="place"
column="PLACE_ID"
not-null="true"
/>
place.getEvents().add(event); event.setPlace(place) hibernate.save(event);
(habe hier beidseitig die referenzen add(event), setPlace(place),
ich denke das muss nicht so sein,cascade erledigt das fuer mich nach erneutem laden oder?)
1) was erstellt Hibernate aus <one-to-many> mit key column="PLACE_ID"/>, ein BAG (aehnlich HashSet/Map wo der Schluessel die PLACE_ID ist) ?
2) So wie ich das verstehe wird durch inverse=true im PLACE <bag> Abschnitt Hibernate mitgeteilt, dass die EVENT/CHILDREN Seite fuer die Durchfuehrung (INSERT/UPDATE) zustaendig ist. Also muss man Hibernate.save(event) schreiben. (Hibernate.save(place) wuerde nicht funktionieren)?
3) Mir ist das mit dem Cascade nicht wirklich klar. Oft lese ich sowas:
save-update: cascades save and update actions from the parent to the child.
Was heisst das? Hibernate.save(place)”, sichert auch event (ich muss nicht Hibernate.save(event) extra schreiben)?? Ist CASCADE also auf die Java Seite oder auf die DB Seite bezogen. (ich denke auf Java Seite) .
4) Ich habe gelesen es geht schneller, wenn ich ueber N (Event) Seite sichere also (INVERSE=TRUE bei PLACE und Hibernate.save(event))
Wenn ich dann Place place = Hibernate.load(placeID) durchfuehre,
hat dann place den neuen Event in seiner Liste (place.getEvents()...).
5) orphan-deletion
Was sind orphan, wozu???
Ich bin ich nicht ganz sich wie cascade und inverse funktioneren.Vielleicht kann mir jmd kurz zu dem 1:n Beispiele das ein bisschen erklaeren.
Gruss
Jan
|