Menu

Seite4161

Anonymous

4.1.6.1 EJB 3.0 allgemein

Was ist JPA?

  • Abkürzung für Java Persistence API
  • ist der Java Persistenz-Mechanimus für J2SE und J2EE
  • basiert auf einem leichtgewichtigen und schlanken Programmiermodell
  • ist eine Spezifizierung zur Persistierung von Java-Klassen unter Benutzung des objektrelationalen Mapping, POJO's, Java Annotations und XML-Deskriptoren
  • JPA enthält eine mächtige Abfragesprache
  • um JPA benutzen zu können, benötigt man eine Implementierung:
  • aktuell verfügbare Implementierungen:

Wie funktioniert JPA?

  • eine gewöhnliche Java-Klasse (=POJO) wird zur Entität indem sie mit der Annotation @java.persistence.Entity markiert wird
  • Entitäten müssen keine speziellen Schnittstellen implementieren
  • Entitäten müssen keine speziellen Klassen erben
  • Entitäten besitzen Attribute, einen Default-Konstruktor, ein ID-Attribut
  • ID-Attribut dient zur technischen Identifizieren
  • unterstützt Vererbung, Assoziationen, Löschregeln

Was ist der Persistenz-Kontext?

  • eine Menge von Objekt-Instanzen, welche zur Laufzeit eindeutig identifizierbar sind
  • der Lebenszyklus des Persistenz-Kontexts wird vom EntityManager verwaltet
  • der EntityManager ist auch für die Beschaffung der Datenbank-Ressourcen verantwortlich
  • Entitäten können in den Persistenz-Kontext eingefügt (attached) oder aus ihm entfernt (detached) werden
  • um Entitäten mit JPA speichern zu können, müssen sie einen Persitenz-Kontext besitzen
  • wenn der Lebenszyklus eines Persistenz-Kontexts endet, werden aus ihm alle Entitäten entfernt (die Entitäten können aber in einen anderen Persistenz-Kontext eingefügt werden)
  • es gibt 2 Persistenz-Kontext-Modelle:
    • transaktionsgebundener Persistenz-Kontext: Lebenszyklus endet zum Transaktionsende
    • erweiterter Persistenz-Kontext: bleibt über das Transaktionsende hinaus erhalten, Lebenszyklus endet mit dem Beenden des EntityManagers

Java Persistence Query Language (JPQL)

  • ist die vom JPA standardisiert Abfragesprache
  • unterliegt nicht mehr den Beschränkungen von EJB-QL
  • (zusätzlich???) implementierte Konstrukte:
    • Inner Joins
    • Outer Joins
    • Fetch Joins
    • Aggregationsfunktionen (avg, sum, min, max, count)
    • Gruppierung (group by)
    • sSortierung (order by)
    • Subqueries innerhalb der where- und having-Klauseln
    • Projektionen

persistence.xml

  • konfiguriert den JPA-Provider (= die konkrete JPA-Implementierung)
  • spezifiziert:
    • die Datenbank-Verbindung
    • alle Entities einer Persistence-Unit
    • die Datei muss im Verzeichnis META-INF im Klassenpfad liegen

Identifizierte Probleme

  • die Methode getByCriteria() ist nur in Hibernate und nicht im JPA Standard implementiert

weiter zu 4.1.6.2 Annotationen für EJB 3.0
zurück zu 4.1.6 Referenzimplementierung der Persistenzschicht
zurück zu 4.1 Implementierung der Referenzanwendung
zurück zu 4 Implementierung
zurück zu [FrontPage]


Related

Documentation: FrontPage
Documentation: Seite000
Documentation: Seite400
Documentation: Seite410
Documentation: Seite416
Documentation: Seite4162