Applikationsentwicklung: Persistenz mit
Java Persistence API
Folie
1, JPA 14.11.2008
DMG, Olnhoff
Geschäftslogik
BusinessProcesses
Business-Objects (Entities)
Annotations
Java Persistence API (Toplink Implementation)
JDBC (Implementation ..)
Datenbanksystem (Produkt ..)
Datalayer
Folie
2, JPA 14.11.2008
DMG, Olnhoff
Beschreibungsmittel und Klassen
- Annotations: Mapping der Klassen zu DB-Tabellen
- EntityManager: Zugriff auf persistente Objekte
(Suchen, Speichern, Transaktionen, ..)
- persistence.xml: Treiber, DB-Connection, ..
- Beispiel: UniDB (wir erarbeiten das Java-Projekt
zusammen)
Folie
3, JPA 14.11.2008
DMG, Olnhoff
Annotations-1
- @Entity: Klasse ist persistent
- @Table(name=..): Klasse wird auf Tabelle abgebildet
- @Column(name = ..) : Klassen- zu Tabellenattribut
- @Id: Primärschlüssenattribut
- @GeneratedValue(strategy=..):
automatische Generierung eines Attributwertes (Id)
Folie
4, JPA 14.11.2008
DMG, Olnhoff
Annotations-2:
M-zu-1 Beziehung zwischen Exemplar und Medium
in der Klasse Vorlesungen:
- @JoinColumn(name = "gelesenVon",
referencedColumnName = "PersNr")
- @ManyToOne
- private Professoren gelesenVon;
Umkehrung in der Klasse Professoren:
- @OneToMany(mappedBy = "gelesenVon")
- private Collection<Vorlesungen>
vorlesungenCollection;
Folie
5, JPA 14.11.2008
DMG, Olnhoff
Annotations-3:
mc-zu-mc Beziehung zwischen Studenten und Vorlesungen
In Studenten:
- @JoinTable(name = "hoeren", joinColumns =
[email protected](name = "MatrNr",
referencedColumnName = "MatrNr")},
inverseJoinColumns = [email protected](name =
"VorlNr", referencedColumnName = "VorlNr")})
- @ManyToMany
- private Collection<Vorlesungen> vorlNrCollection;
In Vorlesungen:
- @ManyToMany(mappedBy = "vorlNrCollection")
- private Collection<Studenten> matrNrCollection;
Folie
6, JPA 14.11.2008
DMG, Olnhoff
Annotations-4: für Vererbungshierarchien
folgt später
Folie
7, JPA 14.11.2008
DMG, Olnhoff
Persistence.xml
<persistence-unit name=„uniPU„
transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink…</provider>
.. Entity-classes ..
<properties> Connection-properties,
Log-property
</properties>
</persistence-unit>
Folie
8, JPA 14.11.2008
DMG, Olnhoff
EntityManager
EntityManagerFactory emf =
Persistence.createEntityManagerFactory(„uniPU");
EntityManager em = emf.createEntityManager();
em.createQuery("select p from Professoren p")..
gibt Object-Collection zurück (Generics)
als Query ein Ausdruck, der an OQL erinnert
em.persist(entityObject), em.merge(..), ..
EntityTransaction ta = em.getTransaction();
ta.begin(), ta.commit(), ta.rollback()
Folie
9, JPA 14.11.2008
DMG, Olnhoff

EntityManager