# JPA ohne Hibernate?



## mad-din (29. Jan 2008)

Hi Leute!

Mit Einführung von JEE 5 gibt es ja eine eigene JavaPersistenceApi von SUN. Laut dem offiziellen Tutorial von SUN zu JEE 5 braucht man Hibernate (oder eine andere Implementierung) nicht mehr. Im diesem Tutorial gibt es ein Beispiel, wie man mit der JPA Persistenzobjekte erzeugen und damit arbeiten kann. Das JavaBuch von Guido Krüger sagt aber, dass man eine Implementierung wie Hibernate benötigt und schreibt auch das Beispiel mit Hibernate. 

Jetzt meine Frage: kann ich mit der JPA auf Hibernate verzichten oder nicht? Denn wenn ich nicht darauf verzichten kann, wo liegt dann der eigentliche Vorteil der JPA? 

Bisher sehe ich es so: ohne die JPA ist Hibernate allein für Persistenz zuständig. Mit Hilfe der JPA wird Hibernate aber einfacher (siehe Annotations), da die JPA ja auf Hibernate aufbaut. Dann stellt sich mir aber die Frage, wozu JPA verwenden und die Klassen umschreiben, wenn sich eigentlich nichts ändert? Würde allerdings Hibernate wegfallen, können die Projekte ohne Hibernate ausgeliefert werden, wodurch sie schlanker werden und ich muss mir keine Sorgen machen, dass die richtige Hibernateversion auf dem Zielsystem vorhanden ist.

Danke schonmal & viele Grüße,
Martin


----------



## ms (29. Jan 2008)

Grob gesagt: JPA ist eine Schnittstelle, Hibernate implementiert diese Schnittstelle.
http://www.hibernate.org/397.html

ms


----------



## mad-din (29. Jan 2008)

Hm,

und wieso verwendet dann das offizielle Tutorial von SUN weder Hibernate noch irgendeine andere Implementierung? Darin wird beschrieben, wie man eine Entity-Klasse, einen Entity-Manager und die notwendigen Konfigurationsdateien erstellt und dass man keine anderen Bibliotheken benötigt. Wofür brauche ich dann noch Hibernate? Liefert SUN zusätzlich zur JPA noch eine Standard-Implementierung aus und wenn ja, was ist dann an Hibernate besser?

Viele Grüße,
Martin


----------



## y0dA (29. Jan 2008)

mad-din hat gesagt.:
			
		

> Hm,
> 
> und wieso verwendet dann das offizielle Tutorial von SUN weder Hibernate noch irgendeine andere Implementierung? Darin wird beschrieben, wie man eine Entity-Klasse, einen Entity-Manager und die notwendigen Konfigurationsdateien erstellt und dass man keine anderen Bibliotheken benötigt. Wofür brauche ich dann noch Hibernate? Liefert SUN zusätzlich zur JPA noch eine Standard-Implementierung aus und wenn ja, was ist dann an Hibernate besser?
> 
> ...



Ja du kannst dir auch gerne alles selber schreiben was dir Hibernate bietet..


----------



## mad-din (29. Jan 2008)

y0dA hat gesagt.:
			
		

> Ja du kannst dir auch gerne alles selber schreiben was dir Hibernate bietet..



Das war nicht meine Frage. Ich wollte wissen, ob die JPA eine Standardimplementierung mitbringt oder nicht. Denn es wundert mich, dass das offizielle Tutorial von SUN in keinster Weise einen Hinweis darauf gibt, dass man sich eine Implementierung besorgen soll, sondern alles ohne einer Implementierung geht. 

Viele Grüße,
Martin


----------



## ms (29. Jan 2008)

> Java Persistence API implementation is based on code from TopLink(TM) contributed by Oracle.


Die Sun-Tutorials basieren auf dem Glassfish. Dieser Applicationserver verwendet Toplink.

https://glassfish.dev.java.net/javaee5/persistence/

ms


----------



## m@ddin (29. Jan 2008)

Hi!

Dann sieht die ganze Sache schon anders aus. Das erklärt unter anderem auch, warum die Beispiele nicht funktionieren  Das heißt also, dass sich eigentlich mit Einführung der JPA nicht wirklich was geändert hat, richtig? Außer, dass SUN jetzt eine Schnittstelle bereit stellt, die vorher Hibernate und andere Persistenz-Frameworks schon vorgegeben haben. Oder wie seht ihr das?

Viele Grüße,
Martin


----------



## byte (29. Jan 2008)

Natürlich hat sich durch JPA etwas gravierendes verändert: 
Dein Know How ist nun wesentlich flexibler. Wenn Du JPA kannst, dann kannst Du (prinzipiell) heute in einem Projekt mit Hibernate arbeiten und morgen in einem Projekt mit einer anderen Implementierung. Das ist der Sinn von standardisierten Spezifikationen.


----------



## mad-din (29. Jan 2008)

Hm,

das allerdings funktioniert doch nur, wenn die Implementierung Annotations, etc. unterstützt. Schaue ich mir "alte" Hibernate Projekte an, dann gab es da ja immer unmengen an XML-Dateien, mit JPA fallen diese ja alle weg, allerdings benötige ich dann auch zusätzlich zum Core von Hibernate auch noch Hibernate Annotations. 

Viele Grüße,
Martin


----------



## maki (30. Jan 2008)

Nö, man kann die guten alten mapping files immer noch verwenden.


----------

