Upload
tamira
View
33
Download
0
Embed Size (px)
DESCRIPTION
Javabasierte Webtechnologien. Objektrelationales Mapper und JDO. Überblick. Motivation Objektrelationale Mapper - Überblick - Beispiel Hibernate - Performance - Fazit Java Data Objekt - Überblick - JDO API - Vom normalem Objekt zu einem JDO - Fazit. - PowerPoint PPT Presentation
Citation preview
Javabasierte WebtechnologienObjektrelationales Mapper und JDO
Lars Kgebein
berblickMotivationObjektrelationale Mapper - berblick - Beispiel Hibernate - Performance - FazitJava Data Objekt - berblick - JDO API - Vom normalem Objekt zu einem JDO - Fazit
Lars Kgebein
MotivationLsen des Impendance Mismatch Problems - Objektorientierte Lsungen in komplexen Anwendungen - Zur Speicherung meistens Relationale Datenbanken - unterschiedliche Paradigmen - ziel : Vorteil von beiden vereinenProbleme - Objektidentitt vs Primrschlssel - Kompositionsmodell vs Fremdschlssel - Vererbungsmodel vs ? - Verschiedene Datentypen
Lars Kgebein
berblick O/R MapperKleiner Projekte eventuell selbst lsen - Sql statments ber jdbc / resultSet umwandeln in Datenobjekte
Bei komplexen Anwendungen mapper nutzen - Automatische Generierung von Datenklassen - Performanceoptimierung mglich die den Overhead durch das Mapping ausgleicht - Unabhnigkeit von verschiedenen Datenbank Herstellern - Cayenne , Jakarta OJB , TopLink , Hibernate
Lars Kgebein
O/R Mapper HibernateWarum Hibernate - Open Source (LGPL) - Populr (circa 16.000 downloads / Monat) - Untersttzung aller groen Datenbanken z.b. mySql , PostgreSql, Oracle , DB2 - Besitzt Optimierungmglichkeiten wie Caching, Connection-pooling - Mglichkeit zur Nutzung unterschiedlicher Entwicklungsszenarien - Generierung von java klassen wenn DB Schemata vorhanden und umgekehrt - verschiedene Anfragesprachen (hql, sql, criteria Queries) - Ausfhrliches logging durch log4j
Lars Kgebein
Funktionsweise von HibernateGenereller AufbauHibernate.properties fr Datenbank und Optimierungsparameter Fr jede Tabelle in der DB eine .java und eine .hbm.xml.java beschreibt die Tabelle selber als Objekt .hbm.xml enthlt Datentypen mapping und zustzliche Parameter
Lars Kgebein
Arbeiten mit HibernateJava Datei
hbm.xml Datei
Lars Kgebein
Zusammenspiel zwischen der Datenbank und HibernateAblauf im DetailZugriff nur ber die Datenobjekte die aus der Session kommen (selection) oder in die Session gehen (insert)Session von SessionFactory generiert , dort auch Optimierungen umgesetztZugriff auf Datenbank erfolgt intern durch JDBC oder hnliches
Lars Kgebein
Anfragen am BeispielErstellen und beenden einer Session
Eintrag in die Datenbank
keinerlei Sql ! nur setter Methoden oder mit Konstruktoren arbeiten fr inserts!
Lars Kgebein
Anfragen am BeispielVerschiedene AbfragenHQL als Objektorientierte Erweiterung von SQL - versteht Vererbung, Polymorphie und Assoziationen-Direkte Abfrage ber Criteria - kein sql notwendig
Lars Kgebein
Tools und PerformancePerformanceSehr abhngig von den Einstellungen und der Anwendung (Cache Zuweisungen fr Querys) Schlechte Erfahrungen im Zusammenspiel mit Tomcat
ToolsKein erstellen der java bzw. xml Dateien notwendig wenn db-schemata schon vorhandenHibernate-extensions beinhaltet folgende Tools : - class2hbm, ddl2hbm, hbm2java - dadurch alle Szenarien abgedeckt
Lars Kgebein
FazitZwar gewisser Aufwand ntig zur Einarbeitung jedoch danach sehr unabhngig von der DatenbankEntwickler muss nicht wissen wie DB Schemata aufgebaut , smtliche Mglichkeiten ergeben sich durch die Get und Set MethodenDurch Criteria keine Kenntnisse von Sql ntig
Nachteil jedoch eventuell Langsamer wenn DB Schema sich ndert muss alles gendert werdenKein genereller Standard , untersttzt nur Datenbanken (keine anderen Formate)
Lars Kgebein
JDO EinfhrungJDO = Java Data ObjectsStandard (API) zur persistenten Speicherung von Java ObjektenStellt Interfaces zur Verfgung welche dann von der jeweiligen Implementierung auf den Datenspeicher zugeschnitten sindDadurch Anwendung unabhngig vom Speicherort seiner Objekte / Daten, xml-files genauso mglich wie verschiedenste DatenbankenSoll Objektorientierte Sichtweise auf Daten ermglichen und Anwendung vom Prozess der Persistierung komplett befreien
Lars Kgebein
JDO API Bestandteile (1)JDOHelper fr statische Hilfsmethoden und zur Erzeugung der PMF , zustzlich noch Methoden zum ermitteln des Zustandes bestimmter JDO Objekte
Lars Kgebein
JDO API Bestandteile (2)PMF fordert einzelne Instanzen des PM an die darber konfiguriert werden knnenParameter zur Optimierung mglich wie Transaktionstrategie und Cachesematik einstellungenAngabe der Datasource
PM verwaltet JDO-Objekte die dort angelegt,gesucht und gelscht werden knnenJeder PM hat exklusiven Objektcache und genau einen Transaktionskontex zwecks transaktionaler Absicherung
Query-Interface dient zur Absetzung von Suchanfragensind in JDO-Query Language formuliert
Lars Kgebein
Vom Objekt zu JDO Objekt (1)Leicht zu Erreichen und Strke von JDO Angabe von den persistenten Eigenschaften von allen Klassen im Package der Anwendung in XML MetadateiMgliche persistence-modifier hierbei : - none , transactional, persistentPersitente Attribute : erfordern Speichermediumabgleich ,unterliegen TransaktionsgrenzenTransactionale Attribute : unterliegen TransaktionsgrenzenNone : sonstigePersistent und Transactional men von JDO Implemtierung beachtet werden
Lars Kgebein
Vom Objekt zu JDO Objekt (2)
Code Enhancer erweitert automatisch den .class Bytecode der Normalen Klasse um JDO ErweiterungJe nach Definition in der Meta Datei klasse nun :Persistent Capable , muss auf jeden Fall erweitert werdenPersistent Aware , klasse selber hat keine persistenten Attribute greift aber auf welche zu (Vererbung etc)Sonstiges muss nicht vom Enhancer betrachtet werden
Vorteil : sehr schnelle Erweiterung vorhandener ObjekteNachteil : inwiefern widersprechen Vernderungen im ByteCode der Java Grundidee der Unabhngigkeit ?
Lars Kgebein
Identitt von JDO ObjektenIn Java Anwendungen von == bestimmt (gleicher Speicherbereich innerhalb der JVM)Bei JDO nicht sicher da Objekt von Anwendung oder Speichermedium kommen kann !Je nach Design der Anwendung : Application Identity , dabei Verwaltet die Anwendung die Datenobjekte durch hinzufgen von Objekt-Id klasse zur eigentlichen klasseSinnvoll fr hoch portable Klassen fr verschiedene Anwendungen , nutzbar ber verschiedene JDO Implementationen hinwegDatastore Identity , hier verwaltet eine Objekt id Klasse alle Objekte die aus der Speicherquelle kommen und garantiert dadurch Identitt (nicht sichtbar)
Lars Kgebein
JDO ObjektzustndeKnnen ber JDOHelper abgefragt werdenMgliche zustnde hierbei : Persistent (im Speichermedium)transactional (mit Transaktion verbunden)dirty (gendert in der Transaktion)new (whrend der Transaktion persitent geworden)deleted (innerhalb der Transaktion gelscht)Stellt im Prinzip die Eigenschaften dar die in der Meta Datei festgelegt wurdenDient zur internen Verwaltung der Transaktionen in JDO
Lars Kgebein
Anfragesprache JDO-QLZiel ist es ein Objekt zurckzuliefern oder eine Collection ber die dann per Get Methoden die Werte ausgelesen werden knnenWHERE deklaration durch Filter abgebildetKeine Like Operatoren sondern startWith() und endsWith() Anwendung auf das Ergebnis Objekt
Lars Kgebein
FazitVorteilePerformanceeinschtzungen schlecht mglich da sehr stark abhngig von JDO ImplementierungDadurch das als Standart definiert verschiedenste Implementierungen denkbarSehr schnelle Erreichbarkeit von ObjektpersistenzAnwendungen knnen ihr Speichermedium schnell ndern ,doppelte Verwendung von JDO Objekten denkbar z.b. online / offline UmgebungenNachteileInwiefern widersprechen Vernderungen im ByteCode der Java Grundidee der Unabhngigkeit ?Anfragesprache (noch) nicht sehr mchtig , soll aber in der Zukunft erweitert werden
Lars Kgebein
Quellenwww.hibernate.org
www.jdocentral.com
Studienarbeit Tobias Vogel
Artikel : Freie Sicht auf Daten (Javamagazin 06/04)
Lars Kgebein
Fragen ?Vielen Dank fr IhreAufmerksamkeit
Lars Kgebein