Java Persistence API 2: Unterschied zwischen den Versionen
Aus Alexander's Wiki
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
Zeile 16: | Zeile 16: | ||
@Id | @Id | ||
private String id; | private String id; | ||
private String param; | |||
public DemoKlasse() { | public DemoKlasse() { | ||
// Hibernate und OpenJPA bieten eigene Generatoren an | // Hibernate und OpenJPA bieten eigene Generatoren an | ||
this.id = UUID.randomUUID().toString(); | this.id = UUID.randomUUID().toString(); | ||
} | |||
public DemoKlasse(String param) { | |||
this(); | |||
this.param = param; | |||
} | } | ||
} | } | ||
</source> | </source> | ||
== Entity-Manager == | |||
Die zentrale Einheit zur Verwaltung von Entitäten ist die Klasse '''EntityManager'''. | |||
<source lang="java5"> | |||
EntitManager em = ... | |||
DemoKlasse demo = new DemoKlasse("Hallo"); | |||
// Starten (und Sammeln in einer) Transaktion | |||
em.getTransaction().begin(); | |||
// Persistieren | |||
em.persist(demo); | |||
... | |||
// Suchen | |||
kunde = em.find(DemoKlasse.class, primaerschluessel); | |||
// Ganze Tranzaktion abwickeln | |||
em.getTransaction().commit(); | |||
</source> | |||
Quellen: | Quellen: | ||
<references /> | <references /> |
Version vom 15. April 2013, 16:02 Uhr
JPA ist eine Spezifikation, die von einem JPA-Provider implementiert werden muss. Die bekanntesten sind:
Entitäten
Die Annotation @Entity macht aus der gewöhnlichen, nicht persistenten Java-Klasse eine persistente Entity. Die Instanzvariable id ist mit @Id annotiert und wird damit von JPA als Primärschlüsselvariable verwendet. Ohne weitere Annotation muss die Anwendung dafür Sorge tragen, dass die Entity vor dem Persistieren mit einem gültigen, also noch nicht vergebenen Primärschlüssel versorgt wird.
import javax.persistence.*;
@Entity
public class DemoKlasse {
@Id
private String id;
private String param;
public DemoKlasse() {
// Hibernate und OpenJPA bieten eigene Generatoren an
this.id = UUID.randomUUID().toString();
}
public DemoKlasse(String param) {
this();
this.param = param;
}
}
Entity-Manager
Die zentrale Einheit zur Verwaltung von Entitäten ist die Klasse EntityManager.
EntitManager em = ...
DemoKlasse demo = new DemoKlasse("Hallo");
// Starten (und Sammeln in einer) Transaktion
em.getTransaction().begin();
// Persistieren
em.persist(demo);
...
// Suchen
kunde = em.find(DemoKlasse.class, primaerschluessel);
// Ganze Tranzaktion abwickeln
em.getTransaction().commit();
Quellen: