20.11.2006. Einführung in Hibernate und Demonstration. Java Arbeitskreis der GTUG. Jürgen Depping CommitWork GmbH. Seite 1



Ähnliche Dokumente
Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Hibernate Das Praxisbuch für Entwickler

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

IBM Software Demos Rational Software Delivery Platform - Änderungen an Design und Architektur einer Anwendung

Der lokale und verteilte Fall

Arbeiten mit UMLed und Delphi

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

ecaros2 - Accountmanager

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

euro-bis Import von Bestellungen aus Buch- und Aboauskunft Stand

Übungen zur Softwaretechnik

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

MCRServlet Table of contents

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Abschluss Version 1.0

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

teamsync Kurzanleitung

Elexis-BlueEvidence-Connector

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

2.5.2 Primärschlüssel

WebService in Java SE und EE

AutoCAD Dienstprogramm zur Lizenzübertragung

Browsereinstellungen für moneycheck24 in Explorer unter Windows

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Übung: Verwendung von Java-Threads

Professionelle Seminare im Bereich MS-Office

Innovator 11 classix. Erweiterter XMI-Export aus Innovator Business und Object classix. HowTo.

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Einführung in die Java- Programmierung

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

ObjectBridge Java Edition

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Synchronisations- Assistent

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

ein Versandsystem das immer passt HVS32 Monitoring

Software Engineering Klassendiagramme Assoziationen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Gezielt über Folien hinweg springen

Einführung in die Programmierung

Externe Abfrage von für Benutzer der HSA über Mozilla-Thunderbird

Microsoft Access 2010 Navigationsformular (Musterlösung)

Arbeitsgruppen innerhalb der Website FINSOZ e.v.

Objektorientierte Programmierung

Erstellen eigener HTML Seiten auf ewon

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Internet online Update (Mozilla Firefox)

Innovator 11 classix. Anbindung an Eclipse. Einführung, Installation und Konfiguration. Connect. Michael Kaaden.

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Anwendungsbeispiele Sign Live! Secure Mail Gateway

ShopwareAutoinvoice Installations- und Benutzeranleitung

MaklerManager Ergänzung zum Handbuch 2.0

Einsatz von xalerator. bei den. Ergo Direkt Versicherungen. Bereich Versicherungstechnik/Leben

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Webalizer HOWTO. Stand:

Adminer: Installationsanleitung

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Import und Export von Übergängern

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Um die Rücklagen ordnungsgemäß zu verbuchen, ist es wichtig, Schritt-für-Schritt vorzugehen:

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Neuinstallation Einzelplatzversion

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Terminabgleich mit Mobiltelefonen

Print2CAD 2017, 8th Generation. Netzwerkversionen

1. Die Signaturen auf den PDF-Dokumenten der Deutschen Rentenversicherung werden als ungültig ausgewiesen oder mit Gültigkeit unbekannt gekennzeichnet

10 Erweiterung und Portierung

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Updateseite_BuV-PlugIn-NERZ-Gesamt

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Einführung in TexMaker

Konfiguration der tiptel Yeastar MyPBX IP-Telefonanlagen mit Peoplefone Business SIP Trunk

Objektorientierte Programmierung. Kapitel 12: Interfaces

Kundenspezifische Preise im Shop WyRu Online-Shop

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

OP-LOG

Auto-Provisionierung tiptel 31x0 mit Yeastar MyPBX

Transkript:

Einführung in Hibernate und Demonstration Java Arbeitskreis der GTUG 20.11.2006 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de

Agenda Motivation OR-Mapper Hibernate ein O/R-Mapper Hibernate auf HP-NonStop Systemen Hibernate Einführung mit Demo Hibernate Details AndroMDA und Hibernate Seite 2

Motivation - OR-Mapper Seite 3

Motivation - OR-Mapper Das objekt-orientierte Modell enthält reichere Strukturierungsmechanismen als das relationale Modell. Die folgenden Konzepte müssen transformiert werden: - Klassen - Aggregation - Assoziationen - Komposition - Vererbung Realisierungen: - manuelle Umsetzung mit JDBC - EJB mit Entity Beans - OR-Mapper - Objekt-orientierte Datenbanken Seite 4

Motivation OR-Mapper manuelle Umsetzung in großen Projekten nur mit Hilfe von eigenen Generatoren sinnvoll. (CommitWork: DBGenerator Klassenabbildung, Transferobjekt). EJB mit Entity Beans Vorteil: Standardisiert Nachteil: Umsetzung der OO-Konzepte nur mäßig Objekt-Orientierte Datenbanken: Vorteil: beste Umsetzung der Konzepte Nachteil: keine Standardisierung, keine Verbreitung, nachlassendes Interesse bei den Kunden OR-Mapper z.zt. besser als Entity Beans, aber schlechter als OO-DB. Es gibt unterschiedliche OR-Mapper: IntelliBO der Fa. SignSoft, Hibernate Open Source,... Seite 5

Hibernatebeispiel Beispiel aus der Hibernatedokumentation: Seite 6

Hibernate - ein OR-Mapper Seite 7

Hibernate ein OR-Mapper Open Source Persistenz Framework für Java und C# - Die C# Version heißt NHibernate (LGPL - Lizenz) - ca. 30.000 Downloads pro Monat - Einsatz auch im kommerziellen Bereich (Lufthansa, Bank-Verlag,...) Kann auch im Cluster betrieben werden Vielfältig konfigurierbar: - Unterstüzung vieler Datenbanken, Caching Systemen, Transaktionsmonitoren,... Abfragen mit eigene Abfragesprache HQL oder Criteria-API möglich Hibernate wird oft innerhalb eines Webcontainers wie Tomcat oder innerhalb von J2EE Applikationsservern verwendet ( Bea WLS, JBoss,...) JBoss nutzt Hibernate zur Realisierung der EJB3 Spezifikation Seite 8

Webservices Hibernate auf HP-NonStop Systemen Seite 9

Alu Norf Studie von CommitWork durchgeführt Januar 2006 1) Standardzugriffe CRUD auf eine MP-Tabelle über SQL-MX Testtablemp: eine SQL/MP-Tabelle mit Alias in SQL/MX Transaktionsverhalten: - bean managed transaction - container managed transaction 2) Standardzugriffe CRUD auf eine MX-Tabelle Testtablemx: eine reine SQL/MX-Tabelle, Transaktionsverhalten: - bean managed transaction - container managed transaction 3) XA-Test Innerhalb einer Transaktion Zugriff auf Oracle und SQL/MX Seite 10

Ergebnisse Alu Norf Studie Januar 2006 geforderte Eigenschaft Nutzung des WLS Connection Pools und der WLS Datasource Verwendung von prepared Statements Standardzugriff auf SQLMP mit SQLMX Alias Tabelle: Testtablemp Transaktion: BMP Standardzugriff auf SQLMP mit SQLMX Alias Tabelle: Testtablemp Transaktion: CMP Standardzugriff auf SQLMX Tabelle: Testtablemx Transaktion: BMP Standardzugriff auf SQLMX Tabelle: Testtablemx Transaktion: CMP Paralleler Zugriff auf eine nicht NonStop-Datenbank Tabelle: Person (separate Transaktion) verteilte Transaktionen (XA) NonStop und Oracle Datenbank Ergebnis erfüllt erfüllt erfüllt erfüllt erfüllt erfüllt erfüllt erfüllt Seite 11

SQL/MX Erweiterungen Hibernate - Dialektklasse Ziel: Datenbankunabhängigkeit Dialektklasse beschreibt datenbankspezifische Eigenschaften existiert für eine Vielzahl an Datenbanken für SQL/MX ist die generische Dialektklasse nicht ausreichend. SQL/MX: SQLMXDialect.java Package: org.hibernate.dialect Mapping von Java Datentypen auf DB Datentypen Quelle: Using Hibernate with NonStop SQL/MX by Frans Jongma, HP EMEA Seite 12

Notwendige Erweiterungen Hibernate - Batching SQL/MX benötigt ein explizites Löschen der Batchingverwaltung Klasse: org.hibernate.jdbc.batchingbatcher Methode: doexecutebatch(preparedstatement ps) Anpassung: Auskommentieren des Aufrufes clearbatch(). Quelle: Using Hibernate with NonStop SQL/MX by Frans Jongma, HP EMEA Seite 13

Wrapperklassen des SQL/MX-Typ4-Treibers Ohne Anpassung des SQL/MX-Typ4-Treibers sind die Hibernatetools, insbesondere das reverse engineering nicht lauffähig. Ursache ist das Fehlverhalten der Methode gettables(...). Der Originaltreiber hat zwar die korrekte Signatur, aber eine falsche Semantik, obwohl das Verhalten dieser Methode allgemein festgelegt ist. Lösung: Durch Vererbung und Delegation kann das Verhalten nahezu korrigiert werden. CommitWork bietet entsprechende Wrapperklassen an. Der Original-Treiber muss aus lizenzrechtlichen Gründen vom Kunden selbst gepatcht werden! Seite 14

Webservices Hibernate Einführung mit Demo Seite 15

Demo Hibernate und Tools Anhand einer einfachen Tabelle werden vorgestellt: Hibernate Konfiguration Hibernate Mapping - XML Mapping-Datei - Java POJO-Klasse (getter- und setter-methoden) Verwendung der JBoss-IDE Hibernate Tools (Eclipse Plugin) - Hibernate Console - Abfragesprache HQL - Reverse Engineering Serverseitig verwenden wir für die Demo JBoss auf HP-NonStop. Aber zunächst ein wenig Theorie... Seite 16

Hibernate Konfigurationsdateien (*.cfg.xml) Mit der Hibernatekonfiguration werden bestimmt: - Datenbank-Dialekt (SQLMX, PostgreSQL,...) und Datenbankverbindung - Transaktionshandling - Caching - Connection Pool - welche Mappings verwendet werden (Abbildung der Tabellen auf Java POJO-Klassen) Seite 17

Hibernate Mapping und POJO Mapping über XML (*.hbm.xml) - beschreibt eine Abbildung zwischen DB-Tabelle und Java-Klasse - enthält ggf. Zusatzinformation über Vererbung, Aggregation, Komposition und Assoziationen POJO Plain Old Java Object: - Java-Klasse, die die Datenbankobjekte enthalten - Jedes Attribut hat getter- und setter-methoden - sind serialisierbar -> auf die Clientseite übertragbar Sowohl das Mapping (*.hbm.xml), als auch die POJO-Klasse können mittels reverse engineering der Hibernatetools generiert werden! Seite 18

Hibernate - Tools POJO Java Klassen xdoclet hbm2java XML Mapping Dateien hbm2ddl middlegen Datenbank Schema Seite 19

Hibernate Komponenten Transaction Query (HQL) Caching Session (erzeugt durch SessionFactory) Configuration hibernate.cfg.xml hibernate.properties Mapping files Seite 20

Hibernate SessionFactory und Session SessionFactory erzeugt eine Session SessionFactory wird mit Hibernatekonfiguration konfiguriert:...configure( hibernatemeinekonfiguration.cfg.xml).buildsessionfactory; SessionFactory: - currentsession: liefert die aktuelle Session oder erzeugt eine Neue - closesession: schließt die aktuelle Session. Seite 21

Hibernate Objektzustände Objektzustände: Transient, Persistent, Detached Seite 22

DEMO Starte Demo Seite 23

Webservices Hibernate Details Seite 24

Hibernate Identifier Primary keys (ids): - Generierte ( sequence, HILO,...) HILO ist besonders für HP-NonStop interessant, da SQLMX keinen Mechanismus für generierte Keys besitzt! - Von der Anwendung/Datenbank vergeben (assigned) - Zusammengesetzte (composite-id) Beispiel: <id name="id" type="long"> </id> <column name="id" /> <generator class="assigned" /> Seite 25

Hibernate Locking Hibernate unterstützt selbstverständlich das pessimistische Locking. Interessant ist das optimistische Locking. Dabei reicht ein Eintrag in der Mapping Datei aus. Es ist keine zusätzliche Programmierung notwendig! Eingesetzt werden entweder ein Zähler oder ein Timestamp. <version name="version" type="java.lang.long"> </version> <column name="version" /> Seite 26

Fine-grained object model Hibernate bietet die Unterstützung des fine-grained object model an. Für fine-grained Objekte werden keine separaten Datenbank Tabellen angelegt, sondern in der übergeordneten relationalen Tabelle enthalten. Diese Objekte existieren natürlich nur zusammen mit dem umgebenen Objekt. Innerhalb der Mapping Datei wird dies durch component beschrieben: <class...... <component name= <Attributname> class= <Klassenname> > <property... /> </component>... Seite 27

Assoziationen Assoziationen in einem Objektmodell: - unidirektionale und bidirektionale Assoziationen Navigation von einem Objekt zu einem oder einer Menge von Objekten Diese Navigation kann im Fall der bidirektionalen Assoziation von beiden Seiten erfolgen. - Hibernate unterstützt die Assoziationen: - one-to-one - one-to-many und many-to-one - many-to-many Bei Many-Assoziationen können unterschiedliche Java Collection -Klassen genutzt werden. Seite 28

Kompositionen Eine Komposition gibt an, dass das Kindobjekt nur existiert, wenn das Vaterobjekt existiert. Also wird ein Kindobjekt automatisch gelöscht, wenn das Vaterobjekt gelöscht wird. Zur Abbildung einer Komposition wird in Hibernate der Zusatz <cascade= <Strategie> /> verwendet. Cascading bietet unterschiedliche Stufen an. Seite 29

Beispiel einer bidirektionalen One-to-Many Assoziation <class name="com.commitwork.hibgen.transport.customer"...... table="customer"> <set name="orders"... inverse="true"> <key column="cust"> </key> <one-to-many class="com.commitwork...order"/> </set> </class> Seite 30

Lazy Assoziationen Eine lazy Assioziation fordert die Daten der Assoziation erst beim tatsächlichen Zugriff an (Proxy). Objekte werden also erst bei Bedarf ermittelt (Performance). Seite 31

Inheritance - Vererbung Damit ein Objektmodell abbildbar ist muss auch die objektorientiert Vererbung möglich sein. Hibernate bietet zur Abbildung drei Möglichkeiten an: 1) Tabelle für jede konkrete Klasse Tabelle enthält Vater und Kind 2) Tabelle für jede Klassen Hierachie Alle Väter und Kinder werden in einer Tabelle gehalten, Ein Discriminator gibt an, um welche Klasse es sich handelt. 3) Tabelle je Subklasse Für Vater und Kind wird jeweils in eine eigene Tabelle angelegt, Die Beziehungen werden durch foreign keys abgebildet. Seite 32

Objekt - Caching Hibernate unterstützt unterschiedliche Caching Provider. EHCache, OSCache, SwarmCache,TreeCache In der Hibernatekonfiguration wird der Caching Provider festgelegt. Interessant ist der TreeCache. Ist auch in einer geclusterten Umgebung einsetzbar! Das Caching kann dann je Klasse konfiguriert werden: <class name="com.commitwork.test1.transport.testtable" table="testtable" schema="public"> <cache usage="transactional" />... Seite 33

Vorteile für HP NonStop (SQL/MX) Die 4-K Grenze fällt! Man kann über die Mapping Datei zwei Tabellen zusammenführen, so dass aus Programmiersicht die POJO-Klasse mehr als 4-k Daten enthält. Diese Problem konnten wir bei der Portierung von einer nicht NonStop Platform auf HP-NonStop nutzen! Generierte Keys: Automatisch generierte ID's haben wir durch Nutzung des HILO- Generators implementiert! Von der Datenbank generierte Keys werden zur noch nicht von SQL/MX unterstützt! Perpared Statements: Hibernate passt ideal zur HP-NonStop, da prepared Statements verwendet werden! Seite 34

Alternativen zur XML-Notation der Mappingdateien Problem: XML Viele Kunden möchten die Eigenschaften der Mapping Datei nicht in XML kodieren. Lösung: Einsatz von XDoclet Hierzu bietet Hibernate die Nutzung von Metakommentaren innerhalb der Java Pojo Datei an. Durch XDoclet werden aus diesen Meta- Kommentaren die notwendigen XML-Mapping Dateien erstellt. Lösung: Nutzung eines UML-Tools mit MDA-Generators Hier gibt es unterschiedliche Tools. z.b.: AndroMDA ein freier Generator für Model Driven Architecture. Eine Demonstration folgt! Seite 35

Nutzung von Meta-Kommentaren und XDoclet package com.commitwork.hibgen.transport; /** * @hibernate.class table="order" */ public class Order implements Serializable {... /** * @hibernate.id column="id" * generator-class="native" not-null="true" */... public long getorderid() {return orderid;}... Seite 36

Webservices AndroMDA und Hibernate Model Driven Architecture Seite 37

AndroMDA Model Driven Architecture Model Driven Architecture ist schon seit einiger Zeit im Gespräch. Vorgehensweise: 1. Erstellung des objektorientierten Modells mit UML. (UML=unified modeling language ) Hier existiert mittlerweile eine Vielzahl an Produkten. Argo-UML (Open Source), Poseidon, Magic Draw, Rational Rose,... 2. Das Modell wird als XMI-Datei exportiert. 3. Ein MDA Generator erstellt hieraus Programmquelltexte in der Zielsprache (C++, Java) Ein MDA-Generator ist AndroMDA (Open Source) Erstellt werden hier Java Quellcode und Hibernate Dateien! Seite 38

Ein UML Klassendiagramm Beispiel AndroMDA Seite 39

Die Entity Person Entity Person: <<Entity>> ist ein Stereotyp. Der Stereotyp teilt dem MDA- Generator mit, was erzeugt werden soll. Entity => Erzeuge eine Hibernate Mapping Datei und die zugehörige POJO Java Datei. Seite 40 Über die gekennzeichneten Werte können zusätzliche Hibernate Eigenschaften gesetzt werden. Die Assoziaten wurden hier nicht dargestellt (Demo)!

AndroMDA DEMO Starte AndroMDA Demo Seite 41

Fazit Model Driven Architecture Anmerkung: Zur Zeit wird ein Eclipse Plugin für AndroMDA entwickelt! MDA ist aus Sicht eines OO-Designers der Idealfall. Probleme: - Teamfähigkeit bei Nutzung eines UML Case Tools ist zu klären - Durch MDA-Einsatz besteht die Gefahr in eine Versions- und Tool-Hölle zu landen. Für das Gesamtprojekt werden viele Tools eingesetzt. Es muss sichergestellt werden, dass die Versionen passen. Vor allen Dingen bei einem Upgrade einer Komponente! - Arbeitsweise wird vorgeben: Erst das Modell verändern => generieren => implementieren - Case Tool Verhalten bei Großprojekten ist zu testen! Praktischer Lösungsansatz: nur das Domain Modell wird betrachtet! Seite 42

Webservices Fazit Seite 43

Fazit Hibernate Hibernate erfüllt die geforderten Eigenschaften eines O/R-Mappers. Sie haben innerhalb des Workshops einen Eindruck erhalten, was mit Hibernate heute möglich ist. Die Abfragesprache HQL wurde aus Zeitgründen nicht näher dargestellt. Sie wissen was Modell Driven Architecture bedeutet. Hibernate ist auf HP-NonStop Systemen einsetzbar (SQL/MX). Hibernate wird heute schon kommerziell eingesetzt. Die Zukunft wird zeigen, ob O/R-Mapper die reine JDBC- Programmierung ablösen werden. Seite 44