Vorlesungsmitschrieb

Werbung
Persistenz und O/R­Mapping
Objekt­Relational­Mapping
1. eine Klasse
Pro Klasse eine Tabelle, für jedes Attribut eine Spalte
2. Assoziationen (1:1)
1. Möglichkeit: Eine Tabelle d.h. Buch hat Attribute
titel, isbn, autor, erscheinungsJahr
2. Möglichkeit: Zwei Tabellen; Buch hat FK auf Bibliografische Angaben
1
3. Assoziationen: 1:n
Zwei Tabellen
Buch mit Fremdschlüssel auf Autor
4. Assoziationen: n:m
Drei Tabelle, davon eine "Relationentabelle" mit den Fremdschlüsseln
2
5. Interfaces
6. Vererbungsbeziehungen
Keine Repräsentation in DB
3
Variante mit einer Tabelle
name titel
Software Ajax2.0
Audi ­­­ isbn
fahrgestellnr
Typ
123
­­­ ­­­
KFZ
Buch
Fahrzeug
Variante mit zwei Tabellen
Buch
name titel
Fahrzeug
isbn
Software Ajax2.0
name 123
Audi fahrgestellnr
KFZ
Variante mit drei Tabellen
Gegenstand
name Buch
pk
Software 1
Audi
2
fk
1
titel
Ajax2.0
isbn
123
Fahrzeug
fk
fahrgestellnr
2
KFZ
4
Vorteile Nachteile Eine Tabelle wenige JOINS (schnell)
Zwei Tabellen Inhalt muss nicht mehr an Klassen identifiziert werden. Null­Prüfung Drei Tabellen Wartbarkeit
keine Null Prüfung, zusätzliche Spalte für Typ, Primary­Key?
Wartbarkeit: jede Änderung auf der Elternklasse muss auf allen erbenden Klassen vererbt werden Viele Tabellen, viele JOINs => Performanz 5
Persistenz mit Hibernate
Ziel: Java Klassen/Instanzen möglich ohne SQL zu schreiben, in der Datenbank zu persistieren
JPA: Java Persistence API
Hibernate ist eine Implmentierung der JPA
Kochrezept:
1. Schritt: Klasse wie bisher schreiben
2. Schritt: für alles Klasse Default-Konstruktoren und getter/setter für Attribute einfügen
3. Hibernate Libraries (jar-Dateien) von hibernate.org herunterladen und einbinden (Classpath)
4. Konfigurationsdatei anpassen (Benutzername, Passwort, Datenbank und Treiber)
5. MySQL-Connector dem lib Ordner und Klassenpfad hinzufügen
6. Klassen annotieren
6
Wichtigste Annotation
Name Ort @Entity Klasse speichern @ID get­Methoden Primärschlüssel @Table Klasse name="Tabellen Wenn Tabelle name" nicht wie Klass e heißt @Column getMethode name="Spaltenn
ame" @OneToMany get­Methode der @ManyToOne Collection Wert Kommentar
Abbilden von Beziehungen 7
Lehrziel
­ Wissen, was die Konfigurationsdatei beinhaltet
­ Verstehen, wie und für was Annotationen genutzt werden
­ Wissen, wie man UML­Klassendiagramm in Relationen überführt
8
9
Herunterladen