# [Hibernate] Mappingvarianten



## qwerqer (29. Mrz 2012)

Hallo!

Ich habe mich in den letzten Wochen etwas intensiver mit Hibernate beschäftigt, da ich es für ein Schulprojekt benötige. 

Mir ist beim Durcharbeiten sehr vieler Tutorials aufgefallen, dass das Mapping der Klassen auf unterschiedlichste Art und Weise geschieht. 

Diese Arten sind mir bekannt:

Mapping durch XML File (wird in der hibernate.cfg.xml angegeben)
In der hibernate.cfg.xml z.B:

```
<mapping resource="Kunde.hbm.xml"/>
```

Mapping durch Angabe der Klasse in der hibernate.cfg.xml
In der hibernate.cfg.xml z.B:

```
<mapping class="hibernate.classes.Person"/>
```

Mapping via Configuration-Objekt:

```
Configuration config = new Configuration();
config.addAnnotatedClass(PersonTest.class); //add Class for Mapping
config.configure();
```


Es geht bei meinem Projekt jetzt langsam mit der Programmierung los und da stellt sich mir die Frage, welche Vor- bzw. Nachteile die einzelnen Methoden haben und welche am besten gewählt wird.

Vielen herzlichen Dank!

Gruß
Stefan


----------



## stareagle (30. Mrz 2012)

Guten Morgen,

meiner Meinung nach weder noch. Von bestimmten Ausnahmefällen abgesehen würde ich immer Annotionen für das Mapping verwenden. Außerdem würde ich davon abraten die propritäre Hibernate-Syntax zu verwenden. Statt dess würde dir empfehlen dich gleich mit JPA zu beschäftigen. Hibernate kannst du trotzdem nutzen, da es auch eine Implementierung von JPA ist. Neben Hibernate gibt es aber noch andere Implementierungen, zum Beispiel OpenJPA (Apache Foundation) und EclipseLink. 

Beste Grüße

Stareagle


----------



## qwerqer (2. Apr 2012)

Hallo 

Bei der Variante 2. und 3. habe ich vergessen zu erwähnen, dass ich das mit Annotations gemacht hätte. 

Du meinst jetzt die Annotations aus javax.persistence verwenden und nicht die aus org.hibernate.annotations, oder?

Oder verstehe ich dich da falsch?

Ich muss für das Projekt Hibernate verwenden (ist eine Vorgabe) - dh fallen wohl OpenJDK und EclipseLink weg 

Besten Dank!

Grüße
Stefan


----------

