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