# Anfänger Fragen zu JPA



## JPT (8. Feb 2011)

Hallo, 

ich möchte vermeiden, zu jeder Entity SQL-Code zu schreiben. Deshalb möchte ich lernen mit JPA umzugehen. Dazu erst mal ein paar Fragen. (ich habe schon drei Tage recherchiert und ausprobiert, aber Information zu Zusammenhängen oder Vergleichen zu bekommen ist immer relativ schwierig)

- Wenn ich eine beliebige JPA-Implementierung verwende, muss ich zumindest in den CRUD-Standardfällen garkeinen weiteren Code schreiben, ausser dem Mapping?

- Welche JPA-Implementierung sollte ich verwenden? (ich versuchs zZ mit Hibernate, weil ich mich damit im Non-JPA-Modus schon auskenne)

- Wie sieht die Architektur im Umfeld von JPA aus?

- Unterscheided sich die Konfiguration von Hibernate mit und ohne JPA?

- Wie genau bezieht zb Hibernate im JPA-Modus seine "Informationen"?
Also Zusammenhang zwischen Annotations, persistence.xml, hibernate.cfg, hibernate.mapping usw.

Schon mal vielen Dank. 

Wenn ich das Projekt am Laufen habe, werd ich mal ein kleines Tutorial/Beispielprojekt erstellen. 

Jan


----------



## schulhaus (9. Feb 2011)

> - Wenn ich eine beliebige JPA-Implementierung verwende, muss ich zumindest in den CRUD-Standardfällen garkeinen weiteren Code schreiben, ausser dem Mapping?


Der EntityManager muss noch angewiesen werden zu tun, was er tun soll. z.B ein Objekt zu persistieren oder eines zu suchen. 
Für andere Aufgaben gibt es mehrere Möglichkeiten die Datenbank anzuweisen. Es gibt einen CriteriaBuilder, mit dem du dir die einzelnen Queries zusammenstückeln kannst. Zudem gibt es die Möglichkeiten von Named oder Native-Queries. Gewisse Dinge wie Sortierungen können auch über Annotations bewirkt werden.

Codebeispiele:
JPA 2.0 Criteria API How To | techscouting through the news
Named QueryJPAJava
Native QueryJPAJava
Use OrderBy Clause : EJB Query LanguageJPAJava



> - Welche JPA-Implementierung sollte ich verwenden? (ich versuchs zZ mit Hibernate, weil ich mich damit im Non-JPA-Modus schon auskenne)


Bisher habe ich ziemlich gute Erfahrungen mit OpenJPA gemacht.



> - Wie sieht die Architektur im Umfeld von JPA aus?


So wie du sie wählst.


----------



## JPT (9. Feb 2011)

> Der EntityManager muss noch angewiesen werden zu tun, was er tun soll. z.B ein Objekt zu persistieren oder eines zu suchen.


*patsch* klingt selbstverständlich, trotzdem gut, dass du es erwähnt hast. Erspart mir das Rätseln... 



> Architektur


Naja, ich habe mir die Antwort etwas anders vorgestellt. ^^ Vielleicht habe ich die Frage falsch formuliert. 
Ich versuche mal zu beschreiben, was ich bisher verstanden habe:

Enities werden mit Annotations versehen. Die JPA-Implementierung liest aus den Annotations, wie diese Objekte gespeichert werden sollen. Der EntityManager ist die Schnittstelle zum Laden und Speichern (usw) dieser Objekte. 
Mir fehlt hier aber noch ein bisschen Wissen über das, was im Hintergrund abläuft... Oder am anderen Ende... ???:L Weil ich da ja noch dies und das Konfigurieren und Anstossen muss, beim Build...
Ich denke, das ist zum Teil implementierungsspezifisch...


----------



## schulhaus (9. Feb 2011)

Die Persistence muss noch konfiguriert werden. Dies geschieht im File "persistence.xml". Weiter müssen sich die verwendeten Bibliotheken im Build Path befinden.

Erst kürzlich hatte ich ein Problem mit JPA und habe dazu ein komplettes ziemlich simples Projekt erstellt. Da wird OpenJPA mit einer Derby-Datenbank verwendet. Die Bibliotheken für die beiden sind vorhanden. 

Du findest das Eclipseprojekt in diesem Post.
http://www.java-forum.org/datenbankprogrammierung/113226-openjpa-onetomany-probleme.html#post727880


----------



## schulhaus (9. Feb 2011)

Ansonsten kann ich dir noch dieses Tutorial empfehlen:
Understanding the Java Persistence API, Part 1 - JavaWorld
Understanding the Java Persistence API, Part 2: Relationships the JPA way - JavaWorld


----------



## Gast2 (9. Feb 2011)

Hier ist auch noch ein gutes Tut. mit EclipseLink welches viel näher an der JPA ist als Hibernate
JPA 2.0 with EclipseLink - Tutorial


----------



## JPA (24. Mrz 2011)

Folien zum Einstieg gibt es auch hier: http://www.kunkelgmbh.de/jpa/jpa.html


----------

