EJB3 Multi-Table

Status
Nicht offen für weitere Antworten.

lordheady

Neues Mitglied
Hi Leute,

ich hab den Auftrag bekommen in EJB3 ein Entity Bean zu schreiben, welches sich auf 2 Datenbank Tabellen bezieht, die in einer 1…n Beziehung stehen.
  1. Frage ist das überhaupt möglich? (hab ein Artikel gelesen http://www.objects-at-work.de/pmwiki/EJBGlossar/M
    bei Multi-table steht, dass es möglich ist, mehr als nur "1…1" Beziehungen in einem Entity Bean herzustellen,
    paradox ist nur das Codebeispiel, welches nur eine gewöhnliche 1…1 Beziehung zeigt)
  2. Wenn es möglich ist … Wie mach ich das?(Codebeispiel wären sehr hilfreich)
  3. Alternativen -> würde sonst ein zweites Entity Bean schreiben…
Vielen Dank für Eure Antworten im Voraus!!
 
lordheady hat gesagt.:
Frage ist das überhaupt möglich? (hab ein Artikel gelesen http://www.objects-at-work.de/pmwiki/EJBGlossar/M
bei Multi-table steht, dass es möglich ist, mehr als nur "1…1" Beziehungen in einem Entity Bean herzustellen,
paradox ist nur das Codebeispiel, welches nur eine gewöhnliche 1…1 Beziehung zeigt)
Ja, es ist möglich, sonst wäre das ganze EJB nur ein Witz. In dem Beispiel wird einfach nur gezeigt, wie man mehrere Tabellen zu einer logischen Entity-Bean zusammenfassen kann.
lordheady hat gesagt.:
Wenn es möglich ist … Wie mach ich das?(Codebeispiel wären sehr hilfreich)
Es gibt Annotations für alle Typen von Relationships. Siehe OneToMany, ManyToMany, OneToOne etc.
lordheady hat gesagt.:
Alternativen -> würde sonst ein zweites Entity Bean schreiben…
So ist es. Modeliere das ganze zunächst rein in Java, dann kommt der Rest mit Annotationen etc.

OneToMany-Beispiel
Code:
@Entity
class Auftrag
{
   ...

   @OneToMany( mappedBy = "auftrag" )
   private Set<Auftragsposition>;

   ...
}

@Entity
class Auftragsposition
{
   ...

   @ManyToOne
   private Auftrag auftrag;

   ...
}
 
Multi-table Mapping bedeutet, dass die Attribute von einem Entity Bean in mehreren unterschiedlichen Tabellen liegen koennen.
Das geht natuerlich nur, wenn die Tabellen in der Datenbank eine 1 zu 0..1 Beziehung haben, ganz klassisch mit einem Fremdschluessel. 1 zu n oder n zu m kann man nicht in einem Entity Bean abbilden, dazu nimmt man dann mehrere Entity Beans und @OneToMany bzw @ManyToMany Annotations, das hat dann aber primaer nichts mehr mit Multi-table Mapping zu tun.

Der von dir zitierte Artikel sagt uebrigens nichts anderes aus.
 
kleiner_held hat gesagt.:
Multi-table Mapping bedeutet, dass die Attribute von einem Entity Bean in mehreren unterschiedlichen Tabellen liegen koennen.
Das geht natuerlich nur, wenn die Tabellen in der Datenbank eine 1 zu 0..1 Beziehung haben, ganz klassisch mit einem Fremdschluessel. 1 zu n oder n zu m kann man nicht in einem Entity Bean abbilden, dazu nimmt man dann mehrere Entity Beans und @OneToMany bzw @ManyToMany Annotations, das hat dann aber primaer nichts mehr mit Multi-table Mapping zu tun.

Der von dir zitierte Artikel sagt uebrigens nichts anderes aus.

doch, man kann eine 1:n beziehung von darunterliegenden dbtabellen in einer bean agregieren. wie du im beispiel ja auch siehts, haben kunde und anschrift eine 1:n beziehung.
 
Nur die Grafik enthaelt eine 1 zu N Darstellung.
Aber die Grafik passt nicht zu dem Beispiel-Code (In der Grafik heisst die Tabelle ANSCHRIFT im Code ADRESSE).
Ausserdem, wie soll das denn funktionieren? Wenn wirklich in der Tabelle ADRESSE mehrere Einträge per Fremdschlüssel auf den gleichen Eintrag in der Kundentabelle verweisen, was sollte dann in Kunde.strasse stehen? Eine kommaseparierte Liste aller Einträge? Wohl eher nicht.
 
kleiner_held hat gesagt.:
was sollte dann in Kunde.strasse stehen? Eine kommaseparierte Liste aller Einträge? Wohl eher nicht.

ich hab das bild nicht so genau angesehen, aber das geht m.m. schon. natürlich ist strasse dann keine kommaseparierte liste sondern eine echte list (e.g. Arraylist) :lol:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben