Klausur-Termin? • 120 Minuten Bearbeitungszeit • Mögliche Termine (unter Vorbehalt): – Freitag 16.02. – Montag 19.02. – 10:00 – 12:00 Uhr – Dienstag 20.02. – 10:00 – 12:00 Uhr – ??? WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Persistenz • Persistenz = dauerhafte Speicherung (DB, Datei, …) • Frage 1: Warum reden wir darüber? • Frage2: Zusätzliche Anforderungen/Probleme bei persistenter Speicherung? • Frage 3: Wie speichere ich die Objekte meiner OOProgrammiersprache (z.B. Java)? WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Warum reden wir darüber? • Die Daten sind wichtig, sie bilden die Grundlage des Geschäftes und machen einen großen Teil des Geschäftvermögens aus! daher Anforderung für fast jeder Unternehmensanwendung • Die Speicherung ist einer der größten Geschwindigkeitsbegrenzer für Unternehmensanwendungen! • Die Realisierung meist teuer! WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Anforderungen/Probleme • Zuverlässigkeit – Speichermedien können versagen (Haltbarkeit) • Transport – bei der Übertragung vom Hauptspeicher zum Speichermedium kann es zu Fehlern kommen (generell) • Zugriffsschutz – persistente Daten müssen vor unbefugtem Zugriff geschützt werden • Mehrbenutzerzugriff – konkurrierende Zugriffe, insbesondere bei Updates • Transaktionen – Während eines Schreibvorgangs können Fehler auftreten • Performanz – Festplatten und Netzwerke sind langsamer als Hauptspeicher WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Beispiel: Java Objekt public class Person { String name; ArrayList nummern = new ArrayList(); public Person(String name) { this.name = name; } public void addNummer(String num) { this.nummern.add(num); } public static void main(String[] args) { // first create the Object Person p = new Person("Karsten"); p.addNummer("12345"); p.addNummer("67890"); System.out.println(p.getNummernListe()); } } WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Ansätze für Persistenz • Ohne DBMS – Speicherung in einer Datei • Nutzung eines ODBMS • Nutzung von RDBMS – JDBC oder SQLJ – EJB – JDO – Frameworks (z.B. Hibernate) WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Serialisieren von Objekten in Java • Objekte werden von Java in einer Datei gespeichert und können wieder geladen werden. • Alle relevanten Objekte müssen das Interface “java.io.Serializable” implementieren. WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Serialize - Deserialize • Referenzierende Objekte werden automatisch mit gespeichert (serialize) und auch mit geleaden (deserialize). A B class A implements Serializable { private B b; public A() { b = new B(); } } WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Beispiel: Java Serialize public class Person implements Serializable { String name; ArrayList nummern = new ArrayList(); … } class PersTest { public static void main(String[] args) { … Person a = new Person(“Fred”); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(“filename”); os.writeObject(a); os.close; … ObjectInputStream is = new ObjectInputStream(new FileInputStream(“filename”); Person b = (Person)is.readObject(); is.close(); … } } WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Nutzung eines DBMS • Vorteile: – Auch für große Datenmengen – Anforderungen wie: Mehrbenutzer, Indexverwaltungen, Zugriffsschutz, … sind bereits integriert. • Probleme: – Mögliche Lizenzgebühren – Aufwendigere Umsetzung (Datentypen, Strukturen – abhängig vom jeweiligen DBMS) • ODBMS – zu geringe Verbreitung (auf ODBMS gehen wir in dieser Vorlesung nicht wirklich ein!-) • RDBMS – Abbildung von Objekten auf Tabellen nötig WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Nutzung von SQLJ oder JDBC • O/R-Mapping ist Aufgabe des Programmierers – Zeitaufwendig – jedes mal das Gleiche – Schlecht zu warten – andere Programmierer müssen sich erst einarbeiten – Performance abhängig vom Geschick des Programmierers WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Beispiel Teil 1 public class Person { String name; ArrayList nummern = new ArrayList(); … ID Name Nummern 1 Test {1,2,34} … … … Möglichkeit 1 ID Name Nummern 1 Test 1 1 Test 2 1 Test 34 WS2006/2007 Möglichkeit 2 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Beispiel Teil 2 ID 1 Name Test Möglichkeit 3 Forein Key Constraint ID 1 1 1 WS2006/2007 Nummern 1 2 34 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle EJB – Enterprise Java Bean • Standardisierte Komponente innerhalb J2EE (Java 2 Enterprise Edition Java EE 5) • Zurzeit ist EJB 3.0 aktuell • Entwickelt vorwiegend von SUN WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle EJB – Enterprise Java Bean WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle EJB – Enterprise Java Bean • Session Bean – stateful – stateless • Message Driven Bean – zur asynchrone Kommunikation • Entity Bean – Bean Managed Persistenz – Container Managed Persistenz WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle EJB – Enterprise Java Bean • Entity Beans sind persistent (2 Typen), • Erlauben Zugriff von mehreren Clients, – Typically, the EJB container provides transaction management. • Besitzen einen “primary keys” (Identität), • Können Beziehungen zu anderen Entity Beans haben. WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle EJB – CMP • EJB Container kümmert sich um DB-Zugriffe Container Managed Persistenz • Kein SQL in der EJB unabhägig vom DBMS einfachere Portierung • Klare Trennung von Geschäftslogik und Speicherlogik • Im Deployment Descriptor, wird “abstract schema” definiert, welches die Persistenten Felder und Beziehungen beschreibt. WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle EJB – Deployment Descriptor <entity> <ejb-name>Person</ejb-name> … <persistence-type>Container</persistence-type> <cmp-version>2.x</cmp-version> … <cmp-field> <field-name>id</field-name> </cmp-field> <cmp-field> <field-name>name</field-name> </cmp-field> <primkey-field>id</primkey-field> … </entity> WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle EJB - BMP • Programmierer kümmert sich um Persistenz Bean Managed Persistenz • Wissen über DBMS und die Abbildung auf die Speicherstruktur ist während des Programmierens nötig. • Flexibler!!!! – Bei komplexen Joins, Legacy Systemen etc. unumgänglich – Performance Optimierung möglich WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle JDO – Java Data Objects • Spezifikation für ein Framework zur persistenten Speicherung von Java Objekten • JDO gibt keine Vorgaben für physikalische Speicherung – (O/R)DBMS oder andere Zwischenebene, Programmierer (-ung) ist unabhängig vom DBMS WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle JDO – Ziele • Anwendung getrennt vom Persistierungprozess • Sicht auf das Persistierungsmedium abstrahiert • Unabhängikeit vom Persistierungsmedium • Unabhängigkeit von der Laufzeitumgebung – JDO ist unabhängig von J2EE • Austauschbarkeit der JDO-Implementierung WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle JDO – Java Data Objects • Erste Version 2001 unter anderem von SUN, IBM, Apple, … • Referenzimplementierung von SUN • JDO 2 wurde im Mai 2006 verabschiedet • JDO wurde von SUN an Apache abgegeben WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Hibernate • Open Source Projekt (Lizenz: LGPL – GNU Lesser General Public License siehe: http://www.gnu.org/copyleft/lesser.html) • Java (und .NET) persistenz für relationale DBMS .NET = NHibernate • Zitat von Hibernate Web Seite: “Hibernate is a Professional Open Source project and a critical component of the JBoss Enterprise Middleware System (JEMS) suite of products. JBoss, a division of Red Hat, offers a range of 24x7 Professional Support, Consulting, and Training services to assist you with Hibernate.” WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Hibernate • Hibernate (engl. für „Winterschlaf halten“) • KEIN Standard • Keine graphische Oberfläche • Homepage: http://www.hibernate.org/ WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Hibernate • Abbildung auf Relationen erfolgt mittels einer XML-Datei <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="hibernate.pojo.Person" table="PERSONS"> ……… <!– Mappings für die Eigenschaften der Klasse --> </class> </hibernate-mapping> POJO ist eine Abkürzung für Plain Old Java Object, also ein „ganz normales“ Objekt in der Programmiersprache Java. WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Es folgt ein Auszug aus: Persistenz von Objekten von Dr. Serge Shumilov Universität Bonn http://www.odbms.org/download/016.01%20Shumilov%20Persistenz%20von%20Objekten%20September%202004.PDF WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle IBM – Software testen … • http://www-306.ibm.com/software/data/db2/express/ kostenfreie DB Version • http://www-128.ibm.com/developerworks/offers/sek/ kostenfreie Software aus verschiedenen Bereichen (inkl. Rational, DB, WebSphere) WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle