# Komposition in Java darstellen



## unltd (10. Oktober 2008)

Hallo,

ich habe ein Problem mit meinem Modell. Ich versuche eine Abhängigkeit ovn drei Objekten darzustellen, weis allerdings nicht wie ich dies nun in Java implementieren soll.

Obj1 <>---->Obj2 <>----> Obj3

<>-----> soll eine Komposition darstellen =)

Soweit ich weis implementiert man so eine Beziehung mit einem Entity Objekt, dass dann ein Dependent Objekt beinhaltet. Wie kann ich nun von Obj1 auf Obj2 zugreifen?

Hoffentlich versteht jemand mein Problem...

unltd


----------



## Oliver Gierke (10. Oktober 2008)

```
public class Foo {

  private Bar bar;

  public Bar getBar() {
    return this.bar;
  }
}
```

Somit enthält Foo eine Instanz von Bar. Je nachdem was du sonst für Properties hältst, erweiterst du das Composite halt.

Gruß
Ollie


----------



## unltd (10. Oktober 2008)

Ah ok dann hab ichs mir doch richtig gedacht. 

Dann hab ich aber noch ein Problem. Das ganze wird über eine sqlite DB gespeichert. Und da habe ich 2 Arten von Objekten. Entities und Dependents. Ein Entity kann allein bestehen, und ein Dependent nur wenn es an ein Entity gebunden ist. 

Wie kann ich das dann über die Datenbank darstellen?


----------



## Oliver Gierke (11. Oktober 2008)

Da bist du beim Thema Komposition VS. Aggregation. Bei einer Komposition ist das Rootelement für den Lebenszyklus der Unterelemente verantwortlich. Sprich - stirbt der Root, gehen auch die Kinder flöten. Gutes Beispiel Haus<>---Raum. Sprengst du das Haus, sind die Räume auch mit weg.

In der DB realisiert man sowas meist durch Kaskaden, so dass sich ein Löschen des Rootelements auf die Kinder durchschlägt. Diese Constraints definierst du in der Tabellendefinition (plain SQL) oder duch Annotationen an der Domänenklasse (JPA). Bei JPA hast du damit eigentlich auch die Komposition wieder im Code sichtbar.

Gruß
Ollie


----------

