Ähnliche Dokumente
OP-LOG

Referent: Marko Modsching. Vortrag: JPA mit Hibernate. Datum: Deutsche Software Engineering & Research GmbH

Softwareentwicklung mit Enterprise JAVA Beans

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Übungen zur Softwaretechnik

Anleitung Grundsetup C3 Mail & SMS Gateway V

HOWTO Update von MRG1 auf MRG2 bei gleichzeitigem Update auf Magento CE 1.4 / Magento EE 1.8

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Internet online Update (Internet Explorer)

DB2 Kurzeinführung (Windows)

Internet online Update (Mozilla Firefox)

Ihren Kundendienst effektiver machen

Benutzeranleitung Kontoverwaltung

INSTALLATIONSANLEITUNG

4D Server v12 64-bit Version BETA VERSION

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Updatehinweise für die Version forma 5.5.5

Reporting Services und SharePoint 2010 Teil 1

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Blogbeitrag: Installation eines SAP CRM-Systems

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

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

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Entwicklungen bei der Linux Clustersoftware

Übungsaufgabe Transaktion als Middleware

1 von :04

So funktioniert die NetWorker 7.5 Eigenschaft zum Sichern umbenannter Verzeichnisse ( Backup renamed Directories )

Tutorial: Wie nutze ich den Mobile BusinessManager?

PHPNuke Quick & Dirty

Lokale Installation von DotNetNuke 4 ohne IIS

System-Update Addendum

Lizenzen auschecken. Was ist zu tun?

Software Engineering Klassendiagramme Assoziationen

Restore Exchange Server 2007 SP2

1. Einführung. 2. Archivierung alter Datensätze

DCCP (Data Collection Cash Processing) Schaubild Version 1.0

Karten-Freischaltung mit dem UNLOCK MANAGER

K-TAG Master. Dateientschlüsselung/ Dateiverschlüsselung für Slaves. Version 1.0

Hinweise zum Update des KPP Auswahltools (Netzwerkinstallation) auf Version 7.2

Avira Management Console Optimierung für großes Netzwerk. Kurzanleitung

Technische Alternative elektronische Steuerungsgerätegesellschaft mbh. A-3872 Amaliendorf, Langestr. 124 Tel +43 (0)

Kulturobjekte der Donau Das ContentManagementSystem (CMS)

Laborübung - Task Manager (Verwalten von Prozessen) in Windows Vista

Java: Vererbung. Teil 3: super()

OpenMAP WEBDrive Konfiguration. Oxinia GmbH , Version 1

Übung: Verwendung von Java-Threads

ICS-Addin. Benutzerhandbuch. Version: 1.0

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

I. Allgemeine Zugangsdaten für den neuen Server: II. Umstellung Ihres Windows Arbeitsplatzrechners

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Big Data Projekte richtig managen!

Internet Explorer Version 6

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

SharePoint Demonstration

INSTALLATIONSANLEITUNG der Version 2.1 (Jänner 2014)

SQL Server 2008 Standard und Workgroup Edition

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Java Entwicklung für Embedded Devices Best & Worst Practices!

Prozessarchitektur einer Oracle-Instanz

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Installation des edu- sharing Plug- Ins für Moodle

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in der Software 6.0

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

peer-to-peer Dateisystem Synchronisation

Wissenswertes über LiveUpdate

Datenhaltung für Android Model First Christian Ingenhaag, Frederik Götz, Carl Steeg

Software Release Notes

Der Kalender im ipad

Online-Dienste des EPA

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße Neckargemünd

Fernzugang Uniklinikum über VMware View

Laborübung - Task-Manager (Verwalten von Prozessen) in Windows 7

Java Persistence API 2.x. crud + relationships + jp-ql

Technische Analyse der Zukunft

Benutzerhandbuch MedHQ-App

Oracle SQL Tutorium - Wiederholung DB I -

Netzwerkeinstellungen unter Mac OS X

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

Kapitel 10: Datenbankzugriff & Pufferung 2

SEMINAR Modifikation für die Nutzung des Community Builders

Content Management System mit INTREXX 2002.

Cloud Computing. Betriebssicherheit von Cloud Umgebungen C O N N E C T I N G B U S I N E S S & T E C H N O L O G Y

Allgemeine Informationen

Haufe-Lexware GmbH & Co KG Download von lex-blog.de. Einrichtung der neuen Datenbank:

Clientkonfiguration für Hosted Exchange 2010

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

! " # $ " % & Nicki Wruck worldwidewruck

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver.

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

Upgrade-Leitfaden. Apparo Fast Edit 1 / 7

Transkript:

Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Version: 2014 Orientation 1.0 in Objects GmbH Der Sprecher Erik Bamberg (OIO) 2 1

s Aufgaben des Cachings Datenbank entlasten Netzwerk Zugriffe Minimieren Verbessert die Performance Updates und dirty checks Daten sicherstellen, das Session immer das gleiche geänderte Objekt zurückliefert Managed Entities 3 Anforderungen Eigene Implementierung welche Anforderungen sind zu berücksichtigen? 4 2

Möglichkeiten von -Implementierungen JTA Transactional Filesystem In Memory Off-Heap Regions Netzwerk Quelle Distributed Instance 5 Mehrstufige s in O/R-Mappern Agenda für heute Persistence Context (First Level ) Second Level Statement Collection Seit JPA 1.0 Seit JPA 2.0 Nicht spec Nicht spec + Details und Überlegung wie caching verwendet werden sollte 6 3

Caching First Level Zugriff entitymanager.find( ) 1Lvl Datenbank 7 First Level find() memory find() first level cache data storage 8 4

First Level Dirty Checks find() Ref @0001 Ref @0001 memory change find() first level cache data storage 9 Caching First Level Entity Manager d in der Session geladene Objekte Die Entity Manager Instanzen bilden einen First Level Persistence Context = 1st Lvl Objekte werden nur einmal geladen Immer aktiv EntityManager wird bei close() geleert!!! 1Lvl EntityManager 1Lvl EntityManagerFactory 10 5

EntityManagerFactory Gibt EntityManager zurück Wird über verschiedene Threads geshared (ist threadsafe) Normalerweise eine EntityManagerFactory pro Anwendung Pro DB eine EntityManagerFactory (bei mehreren Datenbanken) (providerabhängig) generierte SQL-Statements 2nd Level 11 EntityManager EntityManager ist leichtgewichtig kann beliebig erstellt und zerstört werden ist nicht threadsave Mischung zwischen Connection und Transaction First-Level- (Persistence Context) 12 6

1Lvl lifecycle entitymanagerfactory.createentitymanager() entitymanager.close() 13 Caching First Level Object Object Object Object Persistence Heap Context (1Lvl) Object Object Object Memoryproblem bei vielen Objekten (bulk operations) Find() Query EntityManager Heap 14 7

EntityManager clear() Was passiert bei EntityManager.clear()? Objekte werden detached! nicht mehr managed. -> Achtung bei Updates. kein flush()! Änderungen gehen verloren EntityManager Detached Objekte müssen neu geladen werden -> unterschiedliche Objektinstanz 15 Fazit 1Level Persistence Context (1stLevel ) Für die Dauer einer EntityManager Session/Transaction (z.b: Request) nicht shared zwischen EntityManager VM-Heap Immer verfügbar und aktiv 16 8

Second Level Persistence Context (First Level ) Second Level Statement Collection 17 Caching Second Level Zugriff em.find() 1Lvl 2nd Level Datenbank 18 9

Caching Second Level Applikationsweiter (Persistence-Unit weit) Provider spezifische Implementierung Oft Clusterfähig Evt. Dateiauslagerung 1Lvl EntityManager EntityManager 1Lvl 2nd Level Filesystem Datenbank 19 Second Level bietet die klassischen Funktionen JTA Transactional Filesystem In Memory Off-Heap Regions Netzwerk Quelle Distributed Instance 20 10

Second Level bietet die klassischen Funktionen JTA Transactional Filesystem In Memory Off-Heap Regions Netzwerk Quelle Distributed Instance 21 2Lvl lifecycle Persistence. createentitymanagerfactory( myunit"); entitymanagerfactory.close() EntityManager EntityManager EntityManager 22 11

Shared Mode einschalten persistence.xml <?xml version="1.0" encoding="utf-8"?> <persistence version="2.1 > <persistence-unit name="jdbperf"> <shared-cache-mode>enable_selective</shared-cache-mode> </persistence-unit> </persistence> Werte: ALL ENABLE_SELECTIVE DISABLE_SELECTIVE NONE UNSPECIFIED 23 Selectiver Second Level verwenden @Entity @able(true) public class Country { } Zusammen mit: ENABLE_SELECTIVE DISABLE_SELECTIVE 24 12

Eine kleine Beispiel Entität @Entity @able public class Person { @Id private long id; - 2 EntityManager - Calls nacheinander - Second Level Aktiv @OneToMany (cascade=cascadetype.all,,fetch=fetchtype.lazy) private List<Child> children; } 25 Quizstunde Person p=entitymanager.find(person.class, 1L); Person p2=entitymanager2.find(person.class, 1L); Wieviele SQL Queries? 3 1 2 Was ist SQL? 26 13

Quizstunde entitymanager.createquery("select p from Person p where p.id=1",person.class).getsingleresult(); entitymanager2.find(person.class, 1L); Wieviele SQL Queries? 3 1 2 Keine Ahnung 27 Quizstunde entitymanager.createquery("select p from Person p where p.id=1",person.class).getsingleresult(); entitymanager2.createquery("select p from Person p where p.id=1",person.class).getsingleresult(); Wieviele SQL Queries? 4 1 2 Bei Hardwarepreisen egal 28 14

Quizstunde Person p=entitymanager.find(person.class, 1L); p.getchildren().size(); Person p2=entitymanager2.find(person.class, 1L); p2.getchildren().size(); Wieviele SQL Queries? 3 1 2 4 29 Statementcache Persistence Context (First Level ) Second Level Statement Collection 30 15

Caching Query Das Ergebnis von Queries wird gecached Queries werden nur einmalig ausgeführt Key ist Statement+Parameter Nur ID s werden gecachted 2nd Level Application /EntityManager Select o from Order where ordernr=:nr :nr= 4711 ResultSet (ID s) Query Datenbank 31 Query aktivieren Query query=em. createquery("from Country c where c.iso='de'"); query.sethint("org.hibernate.cacheable", true); Country germany=query.getsingleresult(); 32 16

Collection Persistence Context (First Level ) Second Level Statement Collection 33 Collection s Hibernate stellt zusätzlich Collection zur Verfügung @ (usage=concurrencystrategy.transactional) @OneToMany(mappedBy="customer", fetch=fetchtype.eager, cascade=cascadetype.all) private Set members; Relationships Caching Caching im Second Level Ähnlich dem Query cache werden nur ID s gecachted 34 17

nochmal zurück. Noch ein paar Details Persistence Context (First Level ) Second Level Statement Collection + Details und Überlegung wie caching verwendet werden sollte 35 Möglichst alles n? Möglichst alle Objekte n für beste Performance? 36 18

Probleme beim n Probleme mit Heap-Speicher/Garbage Collector bei großen s Verwaltungsaufwand der s nachschlagen im für Objekte die sowieso meist veraltert sind. Stale Object Gefahr Synchronisationsoverhead im Clusterbetrieb Höhere Software Fehlerrate bei verteilten Systemen Fazit: -Verwendung sollte geplant sein!! 37 Caching Second Level Was cachen? sollte ich nicht cachen Order orderstatus Daten welche sich häufig ändern Entitäten welche von unterschiedlichen Knoten geschrieben werden sollte ich cachen Land Daten welche nur von dieser Applikation geändert werden Konstante Werte Selten veränderliche Werte Werte welche regelmäßig gelesen werden Invoice (1999-2011) Daten welche nur sehr selten gelesen werden 38 19

Query Hints javax.persistence.cache.retrievemode Steuert den Zugriff auf die Objekte im BYPASS Ignoriere Objekte im Shared USE Benutze Objekte im Shared, ignoriere Daten aus DB ResultSet javax.persistence.cache.storemode Steuert wie der nach Query modifiziert wird BYPASS Aus DB geladenes Objekt nicht in den REFRESH Aus DB geladenes Objekt ersetzt das Object im USE Wenn Object nicht im, dann lade von DB und setze in Query query=em.createquery("from Country c where c.iso='de'"); query.sethint(queryhints.cache_retrieve_mode, RetrieveMode.BYPASS); query.getresultlist(); 39 Was brauche ich zum n? 1st Lvl. integriert in JPA Provider 2nd Lvl evt. Implementierung (ehcache,infinispan ect.) Konfiguration in persistence.xml/ Annotations Query 2nd Lvl Implementierung bei Query 40 20

Mission erfüllt 41? www.oio.de info@oio.de??? Fragen??? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim 21

Vielen Dank für ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Manuelle -Controlle cache=entitymanagerfactory.get(); cache.contains(myclass.class,myobject); cache.evict(myclass.class,myobject); cache.evict(myclass.class); cache.evictall(); 44 22