4. Objektrelationales Mapping Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006
Übersicht Grundlagen der Programmierung II Einordnung in den Kontext der Vorlesung Anwendungsentwicklung (Referenzarchitektur, Softwarekategorien) Anwendungs-Komponenten (Anwendungskern) Datenbankzugriff Graphische Benutzeroberflächen (Swing, JSF) Client- / Serverkommunikation (RMI) Berechtigungsverwaltung Application Server (EJB) Erweiterte Konzepte (Reflection, Threads, Design Patterns, ) Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 2
Agenda Agenda Persistence Produkte Praktikums-Lösung Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006. 25.4.2006 Seite 3
Was ist der Persistence-Service (objektrelationales Mapping? Persistenz bedeutet, man kann Objekte anlegen nach verschiedenen Kriterien finden und lesen ändern löschen so dass sie nach Programmende weiter existieren Persistence Es werden immer Objekte und keine unstrukturierte Daten verwaltet Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 4
Einordnung in die Referenzarchitektur betriebliche Informationssysteme Persistence cd Persistence, Transaction «A Component» Application Component TransactionManager TransactionalPool TechnicalConfiguration «Abstract T Component» Transaction TransactionResource «Abstract T Component» Persistence QueryAdministration ModelAdministration SystemsManagement TechnicalConfiguration SystemsManagement Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 5
Persistence Wo benötigen wir Persistence in unseren Anwendungen? A-Fall (Use Case) A-Verwalter (Bsp. ContactManager) createcontact findcontactbynameandcity... A-Entitätstyp (Bsp. Contact) getaddress setaddress relocate... Persistence Relationale Datenbank Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 6
Persistence Hauptaufgabe eines Persistence Managers ist das Mapping zwischen Objekt- und Datenbankwelt Mapping zwischen Entitätstypen und Tabellen Java Datentypen und Datenbank Typen. Klasse Contact Attribute: name: String firstname: String address: String... Tabelle CONTACT NAME FIRSTNAME ADDRESS Methoden: getname() setname()... Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 7
Persistence In Persistence-Produkten erfolgt dieses Mapping modellgesteuert Abbildungsmodell Objektmodell Datenbankmodell Contact name : Label firstname : Label phone : PhoneNumber type : ContactType residents 0..n homeaddress 0..1 Address street : Label streetnumber : StreetNumber city : Label oid : OID ADDRESS STREET OID CONTACT NAME FIRSTNAME Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 8 CITY ADDRESSOID PHONE
Persistence Die Behandlung von Vererbungsbeziehungen ist komplex Contact id: Long name: String CONTACT ID TID NAME BCONTACT ID COMPANY BusinessContact company: String PrivateContact birthday: Date PCONTACT ID BIRTHDAY Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 9
Agenda Agenda Persistence Produkte Praktikums-Lösung Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006. 25.4.2006 Seite 10
Produkte Persistence-Produkte Hibernate ist das am häufigsten eingesetzte Open Source Produkt http://www.hibernate.org/ TOPLink ist das das am häufigsten eingesetzte kommerzielle Produkt http://www.oracle.com/technology/products/ias/toplink/ QuasarPersistence ist ein Open Source Produkt der sd&m AG http://www.openquasar.de Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 11
Agenda Agenda Persistence Produkte Praktikums-Lösung Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006. 25.4.2006 Seite 12
Praktikums-Lösung Datenbanktabellen anlegen Die Datenbanktabellen sind analog der Record-Strukturen anzulegen Die Spalten sind entsprechend den Attributen zu benennen Die SQL-Datentypen sind entsprechend den Java- Datentypen zu wählen Definition zum Beispiel in Manager-Klasse Aufruf in Application.configure() CREATE TABLE `book` ( `id` varchar(255) NOT NULL, `authors` varchar(255), `category` varchar(255), `isbn` varchar(255), `title` varchar(255), `year` int(11), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 13
Praktikums-Lösung Neue Objekte anlegen Definition in Manager-Klasse, Methode executeinsert Generierung eines INSERT SQL- Strings aus Entity-Objekt (über Record-Objekt) Absetzen eines Statement.executeUpdate Trigger durch Entity.store() Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 14
Praktikums-Lösung Abfragen Definition in Manager-Klasse Methoden: findby*, zum Beispiel findbyid Zusammensetzen eines SELECT SQL Strings Absetzen eines Statement.executeQuery Erstellung eines Entitätsobjekts beziehungsweise eines Record Objekts und Übergeben der Werte Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 15
Praktikums-Lösung Objektänderungen Änderung der Attributwerte von Entities Definition in Manager-Klasse Methode: executeupdate Generierung eines UPDATE SQL-Strings aus Entity-Objekt (über Record-Objekt) Absetzen eines Statement.executeUpdate Trigger durch Entity.store() Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 16
Praktikums-Lösung Konfiguration Klasse util.impl.abstractdatabase implementiert Interface util.database Enthält Datenbank-Zugriffs- Parameter (JDBC-Treiber, DB URL, User, Password) Enthält eine Connection, ein Statement und eine Result-Set Ist von der Application zu erreichen Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 25.4.2006, Seite 17