Persistenz in J2EE-Architekturen - PowerPoint PPT Presentation

About This Presentation
Title:

Persistenz in J2EE-Architekturen

Description:

Persistenz in J2EE-Architekturen Rolf Knoll Technischer Leiter Persistence Software GmbH Rolf.Knoll_at_persistence.com – PowerPoint PPT presentation

Number of Views:48
Avg rating:3.0/5.0
Slides: 38
Provided by: Rolf159
Category:

less

Transcript and Presenter's Notes

Title: Persistenz in J2EE-Architekturen


1
Persistenz in J2EE-Architekturen
Rolf KnollTechnischer LeiterPersistence
Software GmbHRolf.Knoll_at_persistence.com
2
Agenda
  • Definitionen
  • Kriterien
  • O/R-Mapping
  • Performanz und Skalierbarkeit/Caching
  • Persistenzvarianten in J2EE
  • Einsatzszenarien Persistenzframeworks
  • Lösungen
  • JDO
  • Hibernate
  • Persistence EdgeXtend
  • Bewertung/Ausblick
  • FA

3
Persistenz Allgemeine Definitionen
  • Fremdwörter-DudenBestehenbleiben eines
    Zustandes über längere Zeit
  • Software-Entwicklung (allgemein)dauerhaftes
    Speichern von Daten ĂĽber Programmaufrufe hinweg
  • Objektorientierte Software-Entw.dauerhaftes
    Speichern der Zustände von (Geschäfts-)Objekten

4
Persistenz(mechanismus) Meine Definition
  • Die Abbildung zwischen (relationalen)
    Datenbeständen und Geschäftsobjekten für den
    performanten Einsatz in objektorientierten
    Systemen
  • Flexibles O/R-Mapping
  • Performanzsteigernde Mechanismen Caching

5
Java 2 Enterprise Edition J2EE Definition
  • the standard for developing component-based
    multitier enterprise applications. Features
    include Web services support and development
    tools (SDK)

6
Kriterien zur Beurteilung
7
O/R-Mapping Kriterien
Row Data Gateway Eine Objektinstanz
repräsentiert eine Tabellenzeile
  • Vererbung
  • Horizontal
  • Vertikal
  • Single Table

Collections - Spezifizierbare Typen
  • Relationen
  • 1-zu-1
  • 1-zu-n
  • m-zu-n
  • Aggregation
  • Assoziation
  • Persistenztypen
  • Entitties
  • Dependents

Attribute - Erweiterbares Typsystem
  • Queries
  • Deklarativ Spezifizierbar
  • Query Language

8
Caching BegrĂĽndung fĂĽr den Fokus
  • Caching is such a fundamental concept in
    object/relational persistence that you cant
    understand the performance, scalability, or
    transactional semantics of an ORM implementation
    without first knowing what kind of caching
    strategy (or strategies) it uses.
  • There are three main types of cache
  • Transaction scope -gt transaktionales Caching
  • Process scope -gt Shared Caching
  • Cluster scope - gt Distributed Caching
  • (Aus Hibernate in Action von Christina Bauer
    und Gavin King)

9
J2EE EinsatzszenarienPersistenz und Caching
Client Container
App Client
J2EE Application Server
Persistenz-fw
  • Caching von
  • Objektinstanzen
  • Objektgeflechten
  • Cachingstrategie
  • Instanziierung
  • Invalidierungvon Objekte

Shared Cache
Tx Cache
Tx Cache
RDBMS
10
J2EE EinsatzszenarienPersistenz und Caching
Client Container
App Client
J2EE Application Server
J2EE Application S
Persistenz-fw
Persistenz-fw
ation Server
Persistenz-fw
Tx Cache
Shared Cache
Shared Cache
Shared Cache
RDBMS
11
Persistenzvarianten
12
J2EE - Java 2 Enterprise EditionPersistenzvariant
en
Client Container
WEB Device
J2EE Application Server
App Client
WEB Client
JMS
WEB Container
JavaMail
JNDI
Services
JDBC
JSP
Servlet
JTA
EJB Container
JCA

Session
Entity
POJO
RDBMS
13
J2EE - Java 2 Enterprise Edition
Persistenzvarianten
Client Container
WEB Device
J2EE Application Server
App Client
WEB Client
JMS
WEB Container
JavaMail
JNDI
Services
JDBC
JSP
Servlet
JTA
EJB Container
JCA

Session
Entity
POJO
RDBMS
14
J2EE - Java 2 Enterprise Edition
Persistenzvarianten
J2EE - Java 2 Enterprise EditionCMP Persistenz
des Containers
J2EE - Java 2 Enterprise EditionBMP JDBC
handcodiert
J2EE - Java 2 Enterprise Edition
J2EE - Java 2 Enterprise EditionCMP Pfw direkt
integriert
J2EE - Java 2 Enterprise EditionBMP Pfw direkt
integriert
J2EE - Java 2 Enterprise EditionBMP Pfw ĂĽber
JCA integriert
J2EE - Java 2 Enterprise EditionPOJO Pfw ĂĽber
JCA integriert
  • J2EE-Compliant
  • Portable bezĂĽglich AppServer/DBMS
  • CMR
  • EJB-QL
  • Implementierung wenig aufwändig
  • Schlechte Performanz
  • Nur fĂĽr grobgranulare Komponenten adäquat
  • J2EE-Compliant
  • Portable bezĂĽglich AppServer
  • Bedingt portabel bezĂĽglich DBMS
  • Implementierung sehr aufwändig
  • gute Performanz nur schwer erreichbar
  • J2EE-Compliant
  • Portable bezĂĽglich DBMS
  • Implementierung wenig aufwändig
  • Optimierungen des Pfw nutzbar
  • Nicht portabel bezĂĽglich AppServer
  • Nutzung von proprietärem Container-API
  • J2EE-Compliant
  • Portable bezĂĽglich DBMS
  • Implementierung wenig aufwändig
  • Optimierungen des Pfw nutzbar
  • Nicht portabel bezĂĽglich AppServer
  • Nutzung von proprietärem Container-API
  • J2EE-Compliant
  • Portable bezĂĽglich DBMS
  • Portabel bezĂĽglich AppServer
  • Implementierung wenig aufwändig
  • Optimierungen des Pfw nutzbar
  • Portable bezĂĽglich DBMS
  • Portabel bezĂĽglich AppServer
  • Auch ohne AppServer verwendbar
  • Implementierung wenig aufwändig
  • Optimierungen des Pfw nutzbar

J2EE Application Server
EJB Container
Services
JCA
Persistenz-fw
CMP
BMP
POJO
Tx Cache
Shared Cache
RDBMS
15
Produkte/Produktgruppen
16
JDOCharakterisierung
  • Spezifikation fĂĽr transparente Persistenz in
    Java
  • Mapping
  • Beliebige Java-Objekte können mit JDO persistent
    gemacht werden, auch ohne verfĂĽgbaren Quellcode
  • JDO stellt explizit keine Voraussetzungen an die
    Speichermedien
  • Je nach Implementierung können RDBMS, OODBMS, XML
    und/oder andere Medien unterstĂĽtzt werden
  • Die Mappinginformation wird fĂĽr die persistente
    Klassen in XML-Files spezifiziert
  • Mit JDO-QL umfassende QL verfĂĽgbar
  • Die Integration in J2EE AppServer erfolgt ĂĽber
    JCA
  • JDO-Enhancer als Standardansatz fĂĽr die
    Persistierung
  • Konkrete JDO-Implementierungen sollten
    grundsätzlich leicht austauschbar sein

17
JDOO/R-Mapping (v 1.0.1)
  • Das Mapping ist in JDO nicht konkret spezifiziert
  • Konkret unterstĂĽtzte Mappingvarianten abhängig
    vom jeweiligen JDO-Tool
  • Inheritance
  • Wird generell unterstĂĽtzt.
  • Relationen
  • Werden generell unterstĂĽtzt
  • Attribute
  • Alle Java-Typen
  • Mapping von BLOBs/CLOBs nicht spezifiziert
  • Dependents
  • SCO (Second Class Objects)
  • Queries
  • Mit JDO-QL vollwertige QL

18
JDOO/R-Mapping (v 2.0 early draft)
  • Klasse abgebildet auf
  • Eine Tabelle
  • Mehrere Tabellen
  • Inheritance
  • Sehr flexible und umfassende UnterstĂĽtzung
  • Je Klasse new-table/superclass-table/no-table
  • Relationen
  • 1-zu-1 und 1-zu-n explizit unterstĂĽtzt
  • m-zu-n abhängig vom konkreten JDO-Tool
  • Versionierung
  • time-stamp/state/version-field

19
JDOCaching
  • Transaktionales Caching
  • Verwaltet vom PersistenceManager
  • Verhalten von Objektinstanzen ist ĂĽber tx-Ende
    hinaus spezifizierbar (RetainValues
    RestoreValues)
  • TransaktionsĂĽbergreifendes Caching (shared
    Caching) wird fĂĽr J2EE nicht unterstĂĽtzt
  • Verteiltes Caching nicht spezifiziert
  • Konkrete JDO-Tools können jedoch weitergehendes
    Caching anbieten

20
JDOweitere Features
  • Locking
  • Default ist pessimistisches Locking
  • Die UnterstĂĽtzung von optimistischem Locking
    bleibt dem konkreten JDO-Tool ĂĽberlassen
  • Lese/Ladestrategien
  • Lazy Loading von Objektmengen und Attributgruppen
    (auch Objektreferenzen) spezifizierbar
  • Prefetching ist (noch) nicht spezifiziert
  • Schreibstrategien
  • Write Immediate
  • Delete Actions/Update Actions (ab v 2.0)

21
JDOexemplarische Tools
  • SolarMetric Kodo
  • Fokus auf RDBMS
  • Shared Caching
  • Distributed Caching mit Invalidierung (JMSTCP)
  • LiBeLIS Lido
  • UnterstĂĽtzt werden RDBMS XML Versant FileDB
  • Shared Caching
  • Distributed Caching (Tangosol, Coherent
    integrierbar)
  • Signsoft IntelliBO
  • UnterstĂĽtzt werden RDBMS XML Versant
  • Distributed Caching

22
JDOBewertung
  • JDO ist ein Standard fĂĽr leichtgewichtige,
    persistente Java-Objekte
  • JDO ist als Standard nicht in J2EE integriert
    (Konkurrenz zu EJB 3.0) Marktrelevanz ?
  • Modellbasierte Entwicklung wird nicht unterstĂĽtzt
  • Es gibt keine klare Trennung zwischen transient
    und persistent das sind Zustände derselben
    Objektinstanzen
  • Eine transiente Instanz muss durch den Aufruf
    makePersistent explizit persistent gemacht werden
  • Schreiboptimierungen bezĂĽglich Datenhaltung ist
    nicht spezifiziert (deferred write batch write)
    aber von konkreten JDO-Tools zum Teil unterstĂĽtzt

23
HibernateCharakterisierung
  • Open-Source-Produkt fĂĽr transparentes
    O/R-Mapping in Java
  • Mapping
  • Allgemeine Java-Klassen (mit geringen
    Einschränkungen) können mit Hibernate persistent
    gemacht werden, auch ohne verfĂĽgbaren Quellcode
  • Die Mappinginformation wird fĂĽr die persistenten
    Klassen in XML-Files spezifiziert
  • Mit HQL umfassende QL verfĂĽgbar
  • Die Integration in J2EE AppServer erfolgt ĂĽber
    JCA , JMX oder ĂĽber JNDI/JTA
  • Runtime-Reflection/Runtime-Bytecode-Generation
    zur Persistierung

24
HibernateO/R-Mapping
  • Klasse abgebildet auf
  • Eine Tabelle
  • Mehrere Tabellen
  • Inheritance
  • Umfassende UnterstĂĽtzung
  • table-per-class
  • table-per-class-hierarchy
  • table-per-subclass
  • Dependents
  • Objekte/Collections
  • Relationen
  • 1-zu-1, 1-zu-n und n-zu-m explizit unterstĂĽtzt
  • Versionierung
  • time-stamp/version-field

25
HibernateCaching
  • first level cache
  • Transaktionales Caching
  • Einer Session zugeordnet
  • Wird innerhalb der aktiven tx automatisch genutzt
  • GĂĽltigkeit der Objektinstanzen endet mit tx-Ende
  • Keine weitergehende Konfiguration möglich
  • second level cache
  • Optional als shared cache oder distributed cache
    nutzbar
  • Cache Policy spezifizierbar auf Klassen- und
    Assoziationsbasis
  • Mehrere alternative Implementierungen sind
    verfĂĽgbar (jeweils fĂĽr shared und distributed
    cache)
  • FĂĽr distributed cache Objektinvalidierung und
    Objektsynchronisation realisiert

26
Hibernateweitere Features
  • Locking
  • Default ist optimistisches Locking (Time stamp
    version number)
  • Pessimistisches Locking ist ebenfalls einsetzbar
  • Lese/Ladestrategien
  • Lazy Loading von Objektmengen und Objektinstanzen
    spezifizierbar
  • Batch Fetching fĂĽr Assoziationen
  • Schreibstrategien
  • WriteOnCommit
  • Batch Write

27
HibernateBewertung
  • Hibernate ist eine 0pen-Source-Lösung fĂĽr
    leichtgewichtige, persistente Java-Objekte
  • Die Relevanz von Hibernate könnte durch die
    Standardisierung fĂĽr EJB 3.0 zunehmen
  • Modellbasierte Entwicklung wird nicht unterstĂĽtzt
  • Es gibt keine klare Trennung zwischen transient
    und persistent das sind Zustände derselben
    Objektinstanzen
  • Eine transiente Instanz muss durch den Aufruf
    save explizit persistent gemacht werden
  • Umfassendes Caching bereits im Produkt enthalten
  • Write On Commit mit Batch Writing wird unterstĂĽtzt

28
Persistence EdgeXtendCharakterisierung
  • C-basiertes Persistenzframework mit starkem
    Fokus auf Caching/verteiltem Caching
  • Modellbasierte/generative Vorgehensweise
  • Integration in Rose, Together, Innovator, eclipse
  • Die Mappinginformation wird während der
    Modellierung spezifiziert und ist in separat
    generierter Metadatenklassen verfĂĽgbar
  • Aus einem Modell Generierung von POJOs (PDOs),
    BMPs, C oder C Klassen
  • Interface und ImplClass mit finder-Methoden und
    Traversierungs-Methoden fĂĽr referenzierte Objekte
  • jeweils zusätzlich FactoryClass, StateClass,
    PKClass
  • Integration in J2EE AppServer als JCA Ressource

29
Persistence EdgeXtendO/R-Mapping 1
  • Klasse abgebildet auf
  • Eine Tabelle
  • Eine View (inkl StoredProcedures fĂĽr Ă„nderung)
  • Inheritance
  • Horizontal
  • Single table
  • Vertikal (ĂĽber speziellen Generator)
  • Relationen
  • Aggregation/Assoziation
  • 1-zu-1 1-zu-n n-zu-m ĂĽber Zwischenklasse
  • Rollenzuordnung/Delete Actions

30
Persistence EdgeXtendO/R-Mapping 2
  • Dependents
  • als Subset der Tabellenspalten
  • mit eigener Tabelle (ĂĽber speziellen Generator)
  • Queries
  • Keine vollwertige QL
  • Werden ĂĽber Attribute/Attributmengen während der
    Modellierung spezifiziertfinder-Methoden werden
    generiert
  • Standardfinder sind fĂĽr alle Klassen vorhanden
    (findByPK findBySQLWhere, findByJoin)
  • Spezifische Attributtypen
  • Können während der Modellierung spezifiziert und
    generiert werden (auch ĂĽber mehrere
    Tabellenspalten)

31
Persistence EdgeXtendCaching
  • Transparentes Caching von Objektinstanzen und
    Objektgeflechten innerhalb von Transaktionen und
    transaktionsĂĽbergreifend
  • Shared Cache fĂĽr Objekte auĂźerhalb von
    Transaktionen
  • Transactional Cache ein isolierter Bereich je
    tx
  • Verweildauer fĂĽr Instanzen spezifizierbar
  • Verteiltes Caching mit Synchronisation der
    Inhalte ĂĽber Cache-Instanzen hinweg
  • Verschiedene Transportmechanismen unterstĂĽtzt
  • Teilnahme fĂĽr Instanzen spezifizierbar
  • Auch in heterogenen Clustern (z.B. J2EE
    kombiniert mit .NET) einsetzbar

32
Persistence EdgeXtendweitere Features
  • Lese/Ladestrategien
  • Lazy Loading/Prefetching von Ergebnismengen
  • Referenzierte Objekte werden standardmässig nicht
    mitgeladen
  • Referenzierte Objekte können explizit in
    beliebiger Tiefe mitgeladen werden
    (MultiClassObjectFetch)
  • Schreibstrategien
  • Write Immediate
  • Write on Commit
  • Write Never
  • Batch Writing

33
Persistence EdgeXtendBewertung
  • Oberstes Ziel sind performante und skalierbare
    Lösungen. Die Basis hierfür ist der intensive
    Einsatz von Caching
  • Das Standardprodukt unterstĂĽtzt
    performanz-optimiert die wichtigsten
    Mapping-Features ĂĽber einen anpassbaren
    Generator können darüberhinaus kundenspezifische
    Mappings realisiert werden.
  • J2EE ist zwar eine der wichtigsten
    Zielplattformen, aber es werden
    technologieübergreifende Lösungen unterstützt
    (Java, EJB, CORBA, .NET)
  • Das verteilte Caching mit Cache-Synchronisation
    ist seit Jahren bei vielen groĂźen Kundenprojekten
    produktiv im Einsatz

34
FazitBewertung O/R-Mapping
  • Umfassende Mapping-Varianten sind generell
    vorhanden
  • Jeweils Metadatenbasiertes Mapping
  • XML-Spezifikation mit Bytecode-Enhancer (JDO)
  • XML-Spezifikation mit Runtime-Reflection
    (Hibernate)
  • Aus dem UML-Modell generierte Persistenz- und
    Metadatenklassen (EdgeXtend)
  • Queries
  • Umfassende QL
  • JDO-QL (JDO)
  • HQL (Hibernate)
  • Aus dem Modell generierte Querymethoden
    (EdgeXtend)

35
FazitBewertung Caching
  • Transaktionales Caching
  • state of the art
  • Shared Caching
  • Zustandskonsistenz als Differenzierungsmerkmal
  • ease of use als Differenzierungsmerkmal
  • Explizite Verwendung (Hibernate, einige
    JDO-Tools)
  • Automatische Verwendung (EdgeXtend)
  • Distributed Caching
  • Performanz/Overhead als Differenzierungsmerkmal
  • Synchronisationsqualität als Differenzierungsmerkm
    al
  • Zustandssynchronisation von Objektegeflechten
    (EdgeXtend, Hibernate/JBossCache)
  • Invalidierung (EdgeXtend, Hibernate/SwammCache,
    einige JDO-Tools)

36
FazitVorgehensweise/Mechanismen
  • Persistenzmechanismus
  • Transparent (Hibernate, JDO)
  • Automatisch (EdgeXtend, EJB)
  • Persistierung
  • Modellbasiert (EdgeXtend)
  • Bytecode-Enhancer (JDO)
  • Runtime-Reflection (Hibernate)
  • Zielplattformen
  • Java-Anwendungen/J2EE (JDO, Hibernate)
  • Java/C-Anw./J2EE/.NET/CORBA (EdgeXtend)
  • Datenhaltungskomponenten
  • RDBMS, OODBMS, XML, flat file (JDO
    toolabhängig)
  • RDBMS (Hibernate, EdgeXtend)
  • Tool-Realisierung
  • 100 pure Java (JOD, Hibernate)
  • C (EdgeXtend)

37
Fragen ?
Was ist noch offen ?ErfĂĽllt das jeweilige
Produkt die Erwartungen entsprechend den Aussagen
der Dokumentation ?Machen Sie einen PoC
basierend auf Ihren projektspezifischen
Anforderungen
Write a Comment
User Comments (0)
About PowerShow.com