# JAXB ausgewählte Felder



## Reggie (23. Okt 2010)

Tach zusammen,

Ich beschäftige mich gerade mit JAXB für eine neues Projekt das ich plane. Nun habe ich mich gefragt ob
 es mit JAXB möglich ist nicht immer alle Elemente in ein XML zu übergeben um ressourcen zu sparen.

Die Idee ist dabei, das bei einer Suchanfrage nur gerade die Informationen mitgegeben werden die auch 
benötigt werden um dem User eine Auswahl zu ermöglichen. Nach der Auswahl kann mittels eindeutiger 
Identifikation dann der Rest der Daten geladen werden.

Ist sowas möglich?

Wäre froh um ein paar Rückmeldungen.

Grüsse Reggie


----------



## gman (23. Okt 2010)

> nicht immer alle Elemente in ein XML zu übergeben



Du kannst in dem XSD-Schema zu der resultierenden XML-Datei angeben das einige Elemente optional sind.
Wie genau das geht musste mal in einer Dokumetation zu XSD nachschauen, das weiß ich jetzt auch nicht
auswendig. Ich meine ungefähr so:


```
<xs:element minOccurs="0" maxOccurs="1"...
```


----------



## Reggie (23. Okt 2010)

Vielen Dank, wird er aber beim schreiben des XML's nicht trozdem alle Felder die Inhalt haben ins XML reinschreiben? 

Mir geht es rein darum die Traffic möglichst klein zu halten, dass heisst das er auf dem Server nur die 
erforderlichen Daten aus der DB liest(Falls ich hibernate dazu motivieren kann) und dann auch nur diese 
dem Client sendet. Damit dieser dann eine Auswahlliste der zutreffenden Suchergebnisse bilden kann. 

Es ist nicht das Problem das er nicht alle Positionen eines Auftrags niederschreiben soll, sondern dass 
von einer Adresse zum Beispiel in diesem speziellen Fall nur Name und Nummer mitgegeben werden. Der 
Rest der Daten wird erst geliefert wenn eine eindeutige Anfrage per Adressnummer kommt.


----------



## gman (24. Okt 2010)

> wird er aber beim schreiben des XML's nicht trozdem alle Felder die Inhalt haben ins XML reinschreiben?



Ja, klar. Wenn nicht alle Felder geschrieben werden sollen, musst du sie auch nicht in das Objekt füllen aus dem die 
XML-Datei generiert wird.


----------



## Reggie (24. Okt 2010)

Ja aber ich möchte Sie ja in manchen Fällen mitgeben und in manchen halt nicht. Aber ich habe mir das überlegt und werde 2 Klassen schreiben. Ich hoffe einfach das hibernate nicht verwirrt ist wenn es auf einmal 2 Klassen findet die auf denselben Table gemappt sind.


----------



## gman (24. Okt 2010)

> werde 2 Klassen schreiben



Oder du schreibst eine Klasse welche die Zugriffe auf deine Domain-Objekte kapselt und diese dir so liefert wie du
sie haben willst (sprich: in manchen Fällen einzelne Felder auf null setzen).


----------



## Reggie (25. Okt 2010)

Ja aber auch dann werden mindestens die Bezeichner geschrieben. Wie gesagt ich möchte ein minimales Trafficaufkommen.

Trotzdem vielen dank für die Wortmeldung


----------



## gman (25. Okt 2010)

> Ja aber auch dann werden mindestens die Bezeichner geschrieben.



Es sei denn du setzt die Felder im XSD-Schema auf "nillable=true".


----------



## Reggie (25. Okt 2010)

Echt? Cool

Geht das auch mit Annotations?


----------



## gman (25. Okt 2010)

Ja, ich meine das wäre ein Attribut von @XmlElement. Halt dem Tag das an der Property steht:


```
@XmlElement(name = "name", nillable = true)
```


----------



## Reggie (25. Okt 2010)

Cool werd ich gleich mal nachschlagen.

Vielen Dank.


----------

