# Darstellung N-M Beziehung



## The_S (11. Dez 2008)

Hi-Ho,

folgendes Szenario: Es gibt Bücher und Autoren. Ein Autor kann mehrere Bücher geschrieben haben, aber ein Buch kann auch von mehreren Autoren geschrieben worden sein. Diese verknüpfe ich jetzt über eine @ManyToMany-Annotation mit Hibernate. Anschließend würde ich gerne als WebService die Methode getAllAutoren bzw. getAllBuecher anbieten. Jetzt stellt sich aber das Problem, wie man so etwas designed, da eine 1zu1-Umsetzung in XML ja imho nicht möglich ist. Dies würde nämlich bedeuten, dass ich bspw. bei getAllBucher im buecher-XML-Tag n Autoren-Tags hätte, welche wiederum n Bücher-Tags beinhalten würden, welche wiederum n Autoren-Tags beinhalten würde ... usw. usf.

Mir sind zwar Lösungen wie das duplizieren der entsprechenden Klasse und dann die Autoren bzw. Bücher-Collection als @XmlTransient zu bezeichnen geläufig, aber für sonderlich sauber halte ich sie nicht. Deshalb meine Frage: Gibt es da irgendwelche Design-Richtlinien, Tipps, ganz andere Vorgehensweisen, oder eigene Erfahrungen, wie so etwas am Besten realisiert wird?

Danke!


----------



## FArt (11. Dez 2008)

Jetzt mal ganz ohne Hibernate und XML gedacht...

Das löst man doch einfach über Zuordnungs(tabellen).

Also Aufzählung der Bücher, Aufzählung der Autoren, Zuordnung Bücher zu Autoren (oder umgekehrt oder beides).


----------



## The_S (12. Dez 2008)

Ja, das ist mir schon klar, dass man das über Zuordnungstabellen löst. Mir geht es ja ganz expliziert um die Darstellung in XML und nicht in der Datenbank, damit ich die Daten über einen WebService zur Verfügung stellen kann. Deshalb auch das Posting in der Kategorie "XML und Co."  .

Aber trotzdem danke für deine Antwort, immerhin mal eine  .


----------



## foobar (12. Dez 2008)

Kannst du nicht einfach Jaxb oder EMF verwenden?


Ansonsten würde ich versuchen sowas wie Kreuztabellen in Xml nach zu bilden. Also erstmal einen Deklarationsteil wo alle Autoren und Bücher deklariert werden und dann einen Mappingteil in dem die Ids der Autoren zu Ids der Bücher gemapped werden. Genauso wie man das in einer DB machen würde.


```
<xmldb>
<declare>

<authors>
<author id ="1" name ="blubb"/>
</authors>

<books>
<book id ="1" name ="my book"/>
</books>

</declare>
<mappings>
<mapping author="1" book="1"/>
</mapping>
</xmldb>
```


----------



## The_S (12. Dez 2008)

Hi foobar,

die Attribute werden bereits automatisiert über die javax.xml.bind Annotations in XML umgewandelt, genau dabei tritt ja das Problem auf.

Leider ist das Projekt sehr zeitkritisch, so dass ich nicht erst noch einen eigenen Parser und Interpreter für XML schreiben, oder groß konfigurieren kann, mit dem ich mich noch nicht auskenne (das Buch und Autor Beispiel ist natürlich *nicht* meine eigentliche Absicht).

Danke!


----------



## FArt (12. Dez 2008)

Wie gesagt, ganz doof und plain-and-simple XML ohne Schnörkel und Schnick-Schnack:

```
<literatur>
  <autoren>
    <autor>Goethe</autor>
    <autor>Schiller</autor>
    <autor>Lessing</autor>
  </autoren>
  <buecher>
    <buch>Wallenstein</buch>
    <buch>Wilhelm Tell</buch>
    <buch>Faust</buch>
    <buch>Novelle</buch>
  </buecher>
  <abzuordnung>
    <autor>Goethe</autor>
    <buecher>
      <buch>Faust</buch>
      <buch>Novelle</buch>
    </buecher>
  </abzuordnung>	
  <bazuordnung>
    <buch>Wallenstein</buch>
    <autoren>
      <autor>Schiller</autor>
    </autoren>
  </bazuordnung>
</literatur>
```

Für mich ist das die Darstellung einer m-n Beziehung in XML. Wähle frei zwischen abewandelten Lösungen mit Attributen usw.


----------



## The_S (12. Dez 2008)

Das lässt sich so aber nicht mit Standardtools automatisch mappen ... was aber das Ziel der Anwendung ist :'( .

Oder stehe ich da momentan auf dem Schlauch?

Danke!


----------



## FArt (12. Dez 2008)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Das lässt sich so aber nicht mit Standardtools automatisch mappen ... was aber das Ziel der Anwendung ist :'( .



Ne, automatisch lässt sich das (auch meines begrenzten Wissens nach) nicht mappen. Diese Anforderung habe ich der Frage aber auch nicht herausgelesen. Ich habe mich nur um die Darstellung gekümmert, kümmer du dich um das Mapping ;-)


----------



## FArt (12. Dez 2008)

... begrenztes Wissen kurz über Google erweitert...

http://www.castor.org/jdo-other-features.html#1:M-and-M:N-relations


----------



## The_S (12. Dez 2008)

Hm, bezieht sich auf Castor ... ich werds mir mal anschauen, danke!


----------

