23
Javabasierte Webtechnologien Objektrelationales Mapper und JDO

Javabasierte Webtechnologien

  • 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