Performance Tuning bei komplexen Domainmodellen

Größe: px
Ab Seite anzeigen:

Download "Performance Tuning bei komplexen Domainmodellen"

Transkript

1 Performance Tuning bei komplexen Domainmodellen Christian Dedek Falk Sippach Orientation in Objects GmbH Weinheimer Str Mannheim Version: 1.1 Java, XML und Open Source seit 1998 ) Projekte ) ) Beratung ) ) Akademie ) Schlüsselfertige Realisierung von Software Unterstützung laufender Projekte Pilot- und Migrationsprojekte Methoden, Standards und Tools für die Entwicklung von offenen, unternehmensweiten Systemen Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 2

2 Performance? "You need the computing power of a Pentium, 16 MB RAM and 1 GB Harddisk to run Win95. It took the computing power of 3 Commodore 64 (C64) to fly to the Moon. Something is wrong here, and it wasn't the Apollo." Autor unbekannt 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 3 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 4

3 Hibernate ist ein "einfaches" Persistenzframework Person 1 n Collection Adresse Adresse Adresse Adresse <<Tabelle>> Person PERSON_ID<<PK>> FIRSTNAME... <<Tabelle>> Adresse session.save(person);... person = session.load(person.class, 1L); for (Adresse a : person.getadressen) {... } ADRESSE_ID<<PK>> PERSON_ID<<FK>> STRASSE Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 5 Was ist bei komplexen Domänenmodellen? Entität Collection Beleg Gruppen G1 G2 Positionen Positionen Positionen P11 P12 P21 P101 P Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 6

4 Performance-Probleme mit Hibernate? Hibernate verursacht natürlich Overhead durch OR-Mapping, Dirty-Checking, DB-Unabhängigkeit,... Hibernate bringt auch Vorteile: z. B. Caches aber ggf. nutzlos durch falsche Verwendung Was tun? Optimierungsmöglichkeiten von Hibernate ausnutzen Stored Procedures oder direkt SQL aus Hibernate aufrufen (DB spezifische Abfrage-Optimierung) Alternativen zu Hibernate: JDBC, ibatis, Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 7 Vorgehensweise Performance-Tuning Durchführung von Last- und Performanztests Testszenarien (aus Use Cases) und deren Qualitätsziele festlegen sinnvolle Testdaten (wenn möglich auch Massendaten für Lasttests) Problem Testdatenbeschaffung und -reproduktion Testszenarien sollten mit vertretbarem Aufwand wiederholbar sein ev. Definition von Key Performance Indikator Testläufe müssen reproduzierbar sein vor Performance-Tuning muß das mehrfache Ausführen eines Testlaufs gleiche oder zumindest ähnliche Ergebnisse liefern Scheduling, Netzwerk... kleine Performance-Iterationen ein spezielles Tuning und danach Testlauf um Effekt zu erkennen Einsatz spezialisierter Werkzeuge 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 8

5 Aktivitäten bei der Testdurchführung Zielbestimmungen und Mengengerüst festlegen Testumgebung und Rahmenbedingungen erfassen Testplan festlegen Maßnahmen durchführen Testszenarien festlegen [gewichtiger Fehler] Test durchführen [nicht aussagekräftig] Analyse durchführen [nicht erfolgreich] [erfolgreich] Misserfolg analysieren [behebbar] [nicht behebbar] 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 9 Lasttesttreiber - The Grinder 3 helloworldservice.py from net.grinder.script.grinder import grinder from net.grinder.script import Test from examples.webservices.basic.javaclass import HelloWorld_Impl from java.lang import System System.setProperty( "javax.xml.rpc.servicefactory", "weblogic.webservice.core.rpc.servicefactoryimpl") webservice = HelloWorld_Impl("http://localhost:7001/basic_javaclass/HelloWorld?WSDL") port = webservice.gethelloworldport() porttest = Test(1, "JAXP Port test").wrap(port) class TestRunner: def call (self): result = porttest.sayhello(grinder.threadid, grinder.grinderid) grinder.logger.output("got '%s'" % result) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 10

6 Lasttestanalysen durchführen logs skript1 data_xxx.log Analyseunterstützung error_xxx.log skript2 Skript Grinder-Import Anzahl Instanzen Speichern als PNG Anzahl Testläufe 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 11 Werkzeuge - Monitoring Tools Profiler: z. B. JProfiler, JProbe, PerformaSure JMX-Tooling: z. B. JConsole, AdventNet, MC4J, Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 12

7 Hibernate Statistics: JConsole, Statsviewer <bean id="jmxexporter" class="org.springframework.jmx.export.mbeanexporter"> <property name="beans"> <map> <entry key="hibernate:name=statistics"> <ref local="statisticsbean" /> </entry> </map> </property> </bean> <bean id="statisticsbean" class="org.hibernate.jmx.statisticsservice"> <property name="statisticsenabled"> <value>true</value> </property> <property name="sessionfactory"><ref bean="sessionfactory"/></property> </bean> 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 13 Werkzeuge - DB-Analyzer Tracer: z. B. P6Spy, IronTrack SQL, Elvyx SQL-Clients: z. B. Toad, SQL-Developer (für Oracle DB) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 14

8 Live-Demo Anwendung steht für mehrere Minuten Ermittlung der Ursache per P6Spy und IronTrack SQL eine bestimmte DB-Abfrage dauert sehr lange per SQL-Tool (Explain-Plan, Autotrace) <<Tabelle>> Tabelle Einträge aus Tabelle1 löschen "delete from Tabelle1 where..." Full Table Scan in Tabelle2 (Constraint-Überprüfung) Ursache: Index auf TABELLE1_FK-Spalte fehlt ID <<PK>>... <<Tabelle>> Tabelle2 ID <<PK>> TABELLE1_FK <<FK>> Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 15 Autotrace-Auswertung in SQL-Tool: Optimierung durch Einführung von DB-Indizes ohne Index mit Index 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 16

9 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 17 Hibernate in 30 Sekunden Java Compiler *.class Java Virtual Machine *.hbm.xml Hibernate DB hibernate.cfg.xml 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 18

10 Schichtentrennung Business Layer Interceptor UserType Persistence Layer Session Transaction Query SessionFactory Configuration JNDI JDBC JTA 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 19 Optimierte Navigation in komplexen Objektnetzen/Relationen? Mannheim Heidelberg GreenSupply G7/2 Hauptstrasse 174 <<Tabelle>> Person PERSON_ID<<PK>> FIRSTNAME... <<Tabelle>> Adresse ID<<PK>><<FK>> STRASSE... id strasse position plz 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 20

11 Relationen navigieren Navigationsgeschwindigkeit optimieren vollständiges Objektnetz in Speicher laden komplexe Netze brauchen viel Speicher Speicherverbrauch optimieren Relationen werden bei Bedarf nachgeladen sog. N+1 Problem mögliche Lösungen Batch Fetching Subselect Fetching Join Fetching (Achtung: Karthesisches Produkt) HQL Filter 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 21 N+1 Problem List<Person> allpersons = session.createquery("from Person").list(); // List<Person> allpersons = session.createcriteria(person.class).list(); Map<Person, Address> highestaddresss = new HashMap<Person, Address>(); for (Person person : allpersons) { Address highestaddress = null; for (Address address : person.getaddresss() ) { // Initialize the coll. if (highestaddress == null) highestaddress = address; if (address.getplz() > highestaddress.getplz()) highestaddress = address; } highestaddresses.put(person, highestaddress); } 1 select für Liste der Entitäten + n select für jede navigierte Relation 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 22

12 Batch-Fetching <set name="addresss" inverse="true" batch-size="10"> <key column="person_id"/> <one-to-many class="address"/> </set> 1 select für Liste der Entitäten select Persons... + n/batchsize selects für jede Gruppe navigierter Relationen select a.* from Address a where a.person_id in (?<,?>) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 23 Laden mit Subselects <set name="addresss" inverse="true" fetch="subselect"> <key column="person_id"/> <one-to-many class="address"/> </set> 1 select für Liste der Entitäten select Persons select für alle navigierte Relationen select a.* from Address a where a.person_id in (select p.person_id from Person p) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 24

13 Laden mit joins Fetchplan <set name="addresses" inverse="true" fetch="join"> <key column="person_id"/> <one-to-many class="address"/> </set> 1 select für Liste der Entitäten mit allen navigierbaren Relationen select p.*, a.* from Person p left outer join Address a on p.person_id = a.person_id besonders interessant für n-1-relation 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 25 Laden mit expliziten Queries Alternative Abfrage für eine Liste der Entitäten mit allen navigierbaren Relationen in spezifischem Anwendungsszenario List<Person> allpersons = session.createquery("from Person p left join fetch p.addresss").list(); List<Person> allpersons = session.createcriteria(person.class).setfetchmode("addresses", FetchMode.JOIN).list(); // Iterate through the collections... Es resultiert eine Datenbankanfrage select p.*, a.* from Person p left outer join Address a on p.person_id = a.person_id 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 26

14 Kartesische Produkte id name Bewoh.. Fla.. id name leistung satz id name vorname akti 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 27 Kartesische Produkte mit jeder Relation potenziert sich die Größe des resultierenden Anfrageergebnisses DB-Server Abfragezeit IO-Aufwand Applikation Speicherverbrauch Mappingaufwand in Hibernate 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 28

15 Filter Mapping <class name= City" table= KA_STADT" lazy="false">.. <set name= dezernenten table= KA_DEZERNENT cascade="all,delete-orphan" lazy="false"> <key foreign-key="fk_ka_dezernenten column= KA_STADT_ID" not-null="true" /> <one-to-many class="de.ex.dezernent" /> <filter name="limitbyparty condition= PARTY_NAME = :partid"/> </set>.. </class> Anwendung gethibernatetemplate().enablefilter("limitbyparty").setparameter( partid", DIE GRAUEN );.. gethibernatetemplate().getsessionfactory().getcurrentsession().disablefilter ("limitbyparty"); 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 29 Feintechniken Value types Komponente im Kompositum (fehlender Lebenszyklus) extra Lazy Proxy Collection ev. nützlich bei sehr großen Assoziationsmengen Lazy Attribute Fetching bei LOB-Feldern bereits implizit Interception statt Proxies Aufwand eigenimplementierter Lösungen? 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 30

16 Feintuning zu komplexe DB-Anfragen DB-spezifische Optimierung der execution plans Minimierung von join-fetches zu viele DB-Anfragen fetch-typen definieren eher an der Abfrage als global Batchsizes an Verarbeitungsgruppen(Screens) orientieren Alternative - Caching erwägen? 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 31 Optimierungsstrategie Ausgangspunkt: Lazy Default-Fetch-Plan n-1/1-1-relationen mit lazy=false dann: Szenarien bezogenes Aufzeichnen der auslösenden Hibernateanfragen der resultierenden DB-anfragen daraus: Optimierung der Zahl und Komplexität der resultierenden DB-Anfragen durch Anpassung der Fetchstrategie der initiierten Hibernateanfragen spezifische Optimierung einer Anfrage seltener Optimierung des globalen Fetchplans Vorsicht Kostenfalle: manuelle Testausführung globale Fetchplanänderungen erfordern Regressionstest Lernkurve beachten 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 32

17 bekannte Architektur Muster Open Session in View Pattern Navigation nutzt Sessioncache aber nutzt globale Fetchoptimierung(side Effects?) Query wirkt nicht auf Session Cache Vorteil optimierter spezifischer Fetchplan spezifische Service Fassade Ausgangspunkt Navigation über Session Optimierung über spez. Finder in DAO DAO-Schnittstelle wird breiter/wartungsaufwand generisches DAO (Preload Pattern JavaMagazin 4/08) schmale Finder-Schnittstelle keine spezifischer Fetch-Plan 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 33 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 34

18 Live Demo: Hibernate Statistics 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 35 Caches in Hibernate First-Level: immer aktiviert nur solange die eine Session offen ist funktioniert nur bei Aufruf von load/get und bei Assoziationen-Fetch funktioniert nicht bei Queries Second-Level: muß erst aktiviert werden Konfiguration nicht trivial Query-Cache muß separat aktiviert werden 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 36

19 Cache-Konfiguration in Hibernate-Settings aktivieren CacheProvider (EHCache, OSCache, SwarmCache, TreeCache) use_second_level_cache=true Cache Regions (angeben für Klassen, Collections oder Queries) Usecase spezifisch optimieren usage: Caching Strategie read-only:beste Performance nonstrict-read-write: nur für nicht konkurrierende Zugriffe read-write: gewährleistet read-commited transactional: nur bei JTA-Umgebungen 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 37 Gefahren bei Second Level Caches andere Applikationen, welche die DB ändern Cache muß regelmäßig validiert werden zu viele schreibende Zugriffe Cache-Miss größer als Cache-Hit: schlechtes Cache-Ratio zu kleine Dimensionierung des Cache sollte aber auch nicht zu groß dimensioniert werden (GC dauert länger, längere Validierungsphase mit DB) Performance kann sogar sinken (durch hohen Verwaltungsaufwand) Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 38

20 Problem: fehlender Cache-Hit Beobachtung: Session Cache arbeitet nicht richtig immer wieder die gleichen SQL-Selects im Log-Output Ursache: statt mit load/get wird mit HQL-Findern gearbeitet von AndroMDA generierter Code arbeitet mit findbyid Bug mittlerweile gefixed: AndroMDA generiert jetzt session.get() Alternative für finder: Query-Cache einschalten 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 39 Query-Cache Query-Cache überhaupt erstmal einschalten <prop key="hibernate.cache.use_query_cache">true</prop> Query-Cache speichert nur IDs muß mit Entity-Cache zusammen arbeiten nur sinnvoll für häufige Abfragen mit immer gleichen Parametern darum werden Queries defaultmäßig nicht gecached setcacheable(true) aufrufen! public Object getobjectbyname(string name) { Query q = session.createquery("from Object where name =?"); q.setparameter(0, name); q.setcacheable(true); return q.uniqueresult(); } 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 40

21 Unwirksamer Cache z. B. bei Abfragen mit ständig wechselnden Parametern hql = "from de.oio.firma... where validfrom <= :date and validto >= :date"; Query q = session.createquery(hql); for(..) { q.setdate(..); q.list(); } ggf. eigene Caches implementieren insbesondere wenn immer der gleiche Datensatz geholt wird dazu alle abzufragenden Datensätze laden und in Java vergleichen funktioniert nur bei überschaubarer Anzahl von Datensätzen! 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 41 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 42

22 Collections Arten Indizierte collections maps/lists/arrays über eine index Spalte Sets Uniqueness Bags keine Garantien zu Reihenfolge oder Uniqueness Id-bag TODO Visuell 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 43 Flushing-Probleme: Vorher 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 44

23 Hintergrund Hibernate Session: 1st Level Cache, muß mit DB synchronisiert werden -> Flushing Flushing: Session.flush() Transaction.commit() bei DB-Abfragen (Dirty Check) Dirty Check: Objektänderungen so lange wie möglich in der Session vorgehalten bei Abfragen ggf. zuerst aufgelaufene Änderungen wegschreiben Änderungen werden ermittelt und DML-Anweisungen generiert 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 45 Probleme je mehr Daten in der Session, desto länger dauert Dirty Check Flush aber oftmals gar nicht notwendig Lösungen: Operationen neu ordnen Objekte aus Session abhängen (read-only) mit dem Flush warten bis zum Commit (write behind) Anwendung kontrolliert explizit Flushing Default Flushing Verhalten ändern: MANUAL, COMMIT, AUTO, ALWAYS 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 46

24 Nachher: Flushmode.COMMIT 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 47 Massendaten-Verarbeitung: 1000 Datensätze löschen for (...) { Entity e = session.load(entity.class, id); session.delete(e); } 2000 SQL-Anweisungen Session-Cache wird unnütz befüllt eine SQL-Anweisung minimale DB-Kommunikation String hql = "delete from Entity where id between..."; session.createquery(hql).execute(); 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 48

25 Single SQL statement Objekte können verarbeitet werden, ohne sie vorher in Speicher zu laden (Hibernate unterstützt INSERT/UPDATE/DELETE) update Person set gehalt = :newgehalt where status = 'Chef' separates Löschen von vielen Elementen ist ineffizient session.delete() Vorsicht: Springs HibernateTemplate.deleteAll(Collection col) iteriert über Collection und löscht jedes Element einzeln Collection-Mapping Delete-Optimierung Hibernate erzeugt einzelnes DELETE bei Collection.clear() funktioniert nicht mit inverse="true" (bidirektionalen Beziehungen) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 49 Stateless Session sessionfactory.openstatelesssession() ideal für Ausführung von Bulk/Batch Operationen (funktioniert auch mit detached Objects) ähnlich einer normalen Session, aber kein Persistenz-Kontext, kein Cache (weder 1st noch 2nd) kein automatisches Dirty Checking oder transaktionales Write Behind kein kaskadierendes Verhalten, ignoriert Collections umgeht Event-Modell und Interceptoren 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 50

26 DB Performance Tuning DB Administratoren fragen SQL-Dialect nach herstellerspezifische Features untersuchen ggf. eigenen Dialekt schreiben DB-Indizes fehlen meist bei Grüne-Wiesen-Projekten DB generiert typischerweise nur Unique-Constraints (PK,...) FK-Felder sollten Index erhalten, wenn Sie oft abgefragt werden aber: nicht zu viele Indizes sonst leidet Insert/Update Performance Indizes immer überprüfen, ob sie überhaupt verwendet werden 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 51 Hibernate Indizes Hibernate unterstützt Index-Definition in Mapping-Files für Properties und Assoziationsenden <property name=".." index="idx" /> <many-to-one name=".." index="fk_idx" /> 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 52

27 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 53 Probleme bei Rich-Client Architekturen leider oft: feingranulare Services CRUD-Schnittstelle für jede Domain-Klasse (auch für jedes Kind) viele Aufrufe an Backend (Netzwerkverkehr) bei Objektnetzen hängt teilweise der ganze Objektbaum dran Speicherprobleme bei falschem oder fehlendem Umhängen der Abhängigkeiten (besonders bei bidirektionalen Verbindungen) besser: grobgranulare Fassaden Usecase-spezifisch Minimierung der Aufrufe ans Backend Verringerung der Memory-Spitzen durch weniger RMI-Kopien 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 54

28 C2 wird ans Backend geschickt und dann in Collection Children ausgetauscht vorher: Parent C1 Children C2 service.method(c2) IN OUT nachher: Parent Children Parent_1 Children_1 C1 C2 C1_ Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 55 Herausgelöste Objekt-Teilgraphen Speicher läuft voll bei Remote-Kommunikation durch RMI erhalten wir mehrere Objekte im Speicher mit gleicher Datenbank-Identität diese "Kopien" enthalten ggf. wieder den kompletten (kopierten) Objektgraphen, je nach globaler Fetching-Strategie GC kann Speicher nicht freiräumen, wenn noch Referenzen auf Kopien des Objektgraphen bestehen z. B. durch falsches Setzen der bidirektionale Beziehungen Workaround für bidirektionale Beziehungen: addchild(child child) { this.getchildren().add(child); child.setparent(this); } 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 56

29 Probleme Hibernate Interceptor public interface Interceptor { public boolean onload(..) throws CallbackException; public boolean onflushdirty(..) throws CallbackException; boolean onsave(..) throws CallbackException; public void ondelete(..) throws CallbackException; [..] public void postflush(iterator entities) throws Callba..; public void aftertransactioncompletion(transaction tx); Aufräumen des Interceptor: aftertransactioncompletion() Aber: Aufruf nur bei Hibernate-Transaktionen, nicht bei JTA 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 57 ThreadLocal bei Hibernate Interceptor ThreadLocal-Variable muß immer aufgeräumt werden ThreadLocal.remove(); ThreadLocal kann sonst Memory-Leaks verursachen Verwendung eines ThreadLocals im Hibernate Interceptor bei Nicht-Hibernate-Transaktionen wird nicht aufgeräumt ThreadLocal-Objekt bleibt also bei einer Exception im Speicher gefixed ab Hibernate 3.2.6: es wird nun immer implizit eine Hibernate-Transaktion gestartet dadurch wird Interceptor korrekt deinitialisiert Spring-Workaround für ältere Hibernate-Versionen: AOP-Throw-Advice für Service-Aufrufe, der Interceptor aufräumt 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 58

30 Garbage Collector Aufwand optimieren Genutzten Speicher minimieren Speicher ist zwar immer billiger aber weiterhin begrenzt z.b. ineffizientes caching führt zu erhöhtem Bedarf an Garbage Collections Caching ist kein High-level-Fix für Probleme tieferer Schichte explizite Eviction an der SessionFactory als manueller Eingriffspunkt im API Bessere GC-algorithmen hilft bei typischen Verfügbarkeitsproblemen Phänomen seit Jahrzehnten bei GC-Sprachen bekannt paralleler GC-algorithmus auf multi-prozessor systemen schwierig (aber notwendig) zu testen 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 59 Spring Bugs falsche Errorcodes für Deadlocks in DB Deadlock bei spezieller init Deadlock beim Exceptionhandling von Connections Running benchmarks under high loads with 8 or more concurrents threads I see significant lock contention from the synchronized block in org.springframework.aop.framework.advisedsupport.getinterceptorsa nddynamicinterceptionadvice. This is a significant bottleneck in our benchmarks. wzeite readonly Session in Spring um JSF zu unterstützen 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 60

31 Hibernate Bugs Deadlock im Jboss offen mögliches Memoryleak seltener Deadlock wont fix Deadlocks in Treibern Deadlocks in Pools Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 61 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 62

32 Best Practices I Anwendung einer optimistic concurrency zur Implementierung einer hohen Skalierbarkeit sinnvoll Definition einer klaren Sessionmanagement Strategy vorteilhaft ist Einbindung in gut dokumentierte Patterns Default Fetch Plan für Assoziationen ist lazy Optimierung erfolgt gemäß Kapitel 2 sehr breiter Featureset(Filter,Projektionen,Interceptoren..) zur Optimierung 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 63 Best Practices II Definition der Caching Strategie Festlegen welche Bereiche über Navigation (Session Cache) und welche über Finder (Query Cache optimieren) Entity-Cache fein anpassen und tunen Verständnis für Implementierungsdetails hilft beim Optimieren Definition einer einheitlichen flush-strategie Feintuning: Hibernate auto-flush vs. use case spezifische Synchronisation Untersuchung der GC-Aktivitäten Minimierung des GC-Aufwands Erkennung (minimaler) Memoryleaks 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 64

33 Nichtfunktionale QM-Strategie Performance Meta Antipattern Performance Afterthoughts ist Realität in der agilen Entwicklung nichtfunktionales Qualitätsmanagement benötigt fachlich richtige und realitätsnahe Testfälle Automatisierung Entwicklungsbegleitung Technologische Kompetenz Hibernate/Spring eingesetztes RDBMS Integration ins Entwicklungsteam Empfehlung: Definition von Key Performance Indikatoren 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 65 Architekturelle Reife Die vorkonfektionierte Grobarchitektur Spring/Hibernate hat viele gute Standardeinstellungen in Bezug auf Performanzaspekte in beiden Frameworks Communities sorgen für Praxisnähe und -einsatz der Ideen bietet bei Bedarf sehr viele Möglichkeiten für Performanzoptimierungen oft einfach durch reine Konfiguration Leistungsgrenzen der Kombination Spring/Hibernate sind am technologischen Gesamtstack aus JVM/OS/RDBMS/Netzwerk/IO angelehnt 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 66

34 Der Kaufmann rechnet - oder Reife vs. Produktivität POJO-Development erhöht Entwicklungsgeschwindigkeit und senkt den technischen QM-Aufwand fast direkte Implementierung fachlicher Modelle möglich rasante Entwicklung von Spring/Hibernate/Tooling seit 2003 senkte bisher die Entwicklungsgeschwindigkeit sehr hoher Entwicklungsdruck fordert Qualitätsopfer Vorteil: Open Source schafft hier Transparenz erfordert ständigen KnowHow-Transfer in die Entwicklung gerechtfertigt durch Produktivitäts- und Qualitätssteigerungen zwingt zu Migrationen der Infrastruktur Bsp. MDD-Generatoren, Konfigurations-, Buildmanagement, Codeanalysewerkzeuge 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 67??? Orientation in Objects GmbH Weinheimer Str Mannheim? Fragen?? Version: 1.1

35 Vielen Dank für Ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str Mannheim Version: 1.1

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

Mehr

Hibernate Das Praxisbuch für Entwickler

Hibernate Das Praxisbuch für Entwickler Sebastian Hennebrüder 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Hibernate Das Praxisbuch für Entwickler Galileo

Mehr

The full Catastrophe Performancetuning in agilen Entwicklungsteams

The full Catastrophe Performancetuning in agilen Entwicklungsteams The full Catastrophe Performancetuning in agilen Entwicklungsteams Version: 1.1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Performance, Skalierbarkeit und Stabilität

Mehr

Ihre Persistenzschicht?

Ihre Persistenzschicht? Ihre Persistenzschicht? Kunde, Chef, DBA? Wahrnehmung endet oft mit Fingerpointing richtung ORM Unnützer Konflikt mit DBAs (wertvolle Hilfe beim Debugging) Tuning von Hibernate und JPA Anwendungen Michael

Mehr

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

Referent: Marko Modsching. Vortrag: JPA mit Hibernate. Datum: 04.01.2011. Deutsche Software Engineering & Research GmbH Referent: Marko Modsching Vortrag: JPA mit Hibernate Datum: 04.01.2011 Deutsche Software Engineering & Research GmbH Steinstraße 11 02826 Görlitz Germany Telefon: +49 35 81 / 374 99 0 Telefax: +49 35 81

Mehr

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Objekt-relationales Mapping und Performance-Tuning

Objekt-relationales Mapping und Performance-Tuning Objekt-relationales Mapping und Performance-Tuning Thomas Krüger tkrueger@vanatec.com Agenda Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 2 2 Wege, Daten

Mehr

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Gregor Raschke 2008 HIBERNATE. Eine Einführung 1 HIBERNATE Eine Einführung Inhalt 2 Einleitung Beispielkonfiguration Die hibernate.cfg.xml Eine Beispieltransaktion Abfragemöglichkeiten JPA und Hibernate Ressourcen und Quellen Einleitung (1) - Geschichtliches

Mehr

Last- und Stresstest mit the Grinder 3

Last- und Stresstest mit the Grinder 3 Last- und Stresstest mit the Grinder 3 Orientation in Objects GmbH oder auch mein Leben mit the Grinder 3 Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Struts 2 Das Imperium schlägt zurück?

Struts 2 Das Imperium schlägt zurück? Struts 2 Das Imperium schlägt zurück? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Tobias Kieninger www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software

Mehr

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010 O/R Mapper O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010 Agenda Object-relational impedance mismatch Mapping Session Abfragen No. 2 Object-relational impedance mismatch Object-relational

Mehr

Open-Source Transparente Persistence (keine Interfaces, keine Ober- Klassen) Caching

Open-Source Transparente Persistence (keine Interfaces, keine Ober- Klassen) Caching 1 Was ist Hibernate Hibernate ist ein Open-Source-Java-Persistenz-Framework für relationale Datenbanken Persistenz-Frameworks: kapseln und abstrahiert den Zugriff auf eine Speicherschicht -> Zwischenschicht

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Objektorientierte Datenbanken

Objektorientierte Datenbanken OODB 11 Slide 1 Objektorientierte Datenbanken Vorlesung 11 Sebastian Iwanowski FH Wedel OODB 11 Slide 2 Wesentliche Eigenschaften von Hibernate Transparente Persistenz Transitive Persistenz (Persistenz

Mehr

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik

Mehr

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

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate Hibernate Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen Nabil janah 1 Hibernate Inhalt Hibernate allgemeines Vorteile von Hibernate Hibernate-Architektur

Mehr

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much thomas@muchsoft.com www.muchsoft.com 1 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities 2015 2006 2005 2000

Mehr

Einführung in den NetBeans Profiler

Einführung in den NetBeans Profiler Let s talk about IT Wenn s mal wieder länger dauert Einführung in den NetBeans Profiler Dominik Hofmann 14.01.2010 Themenüberblick Themen Grundlagen und Features des NetBeans Profilers CPU Profiling Memory

Mehr

Java Performance Tuning

Java Performance Tuning Seminarunterlage Version: 5.04 Version 5.04 vom 16. Januar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Alle Unterlagen und Übungen sind in folgenden Google Code Project abgelegt und frei zugänglich: https://code.google.com/p/jpaworkshop/ Aktualisierung

Mehr

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

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit

Mehr

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

Java Persistence API 2.x. crud + relationships + jp-ql Java Persistence API 2.x crud + relationships + jp-ql Grundprinzip 10.02.10 2 Problematik Man muss bei der Persistierung immer das Klassenmodell und dessen Umsetzung im Datenmodell (in der DB) berücksichtigen.

Mehr

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT Neue Technologien effizient nutzen Ehningen, 3. Juli 2014 Rodney Krick rk@aformatik.de aformatik Training & Consulting GmbH & Co. KG

Mehr

Pitfalls. Flush and Clear: O/R Mapping Pitfalls. Mirko Novakovic, codecentric GmbH

Pitfalls. Flush and Clear: O/R Mapping Pitfalls. Mirko Novakovic, codecentric GmbH Flush and Clear: O/R Mapping Pitfalls Flush and Clear: O/R Mapping Pitfalls Mirko Novakovic, codecentric GmbH Agenda Einleitung Pitfalls Faul oder Eifrig Daten verstecken Spülen und Reinigen Fragen? Performance

Mehr

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java)

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java) 4. Objektrelationales Mapping Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

Inheritance Strategien mit dem Entity Framework

Inheritance Strategien mit dem Entity Framework Building & Connecting Know-how 16.-17. Februar 2011, München Inheritance Strategien mit dem Entity Framework TPT, TPC, TPH mit DB First, Model First und Code First 1.0 Partner: Veranstalter: Über René

Mehr

Anwendungsentwicklung mit Spring

Anwendungsentwicklung mit Spring Anwendungsentwicklung mit Spring Eberhard Wolff Managing Director Interface21 GmbH Interface21 - Spring from the Source Interface21 Produkte u.a. Spring Framework Spring from the Source Consulting, Training,

Mehr

Java Persistence mit Hibernate

Java Persistence mit Hibernate Christian Bauer, Gavin King Java Persistence mit Hibernate ISBN-10: 3-446-40941-6 ISBN-13: 978-3-446-40941-5 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40941-5

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

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

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit Johann Fößleitner Cadaxo GmbH email: johann.foessleitner@cadaxo.com Twitter: @foessleitnerj Agenda 1 SAP HANA Integrationsszenarien

Mehr

Module für eine Java-Administrationsschulung

Module für eine Java-Administrationsschulung Module für eine Java-Administrationsschulung Schulungsmodule 1 Java Administration allgemein...2 1.1 Java und die Virtual Machine...2 1.2 Java EE Bestandteile...2 1.3 Java Management Extensions...2 1.4

Mehr

Hibernate. Objekt/Relationales Mapping für Java

Hibernate. Objekt/Relationales Mapping für Java Hibernate Objekt/Relationales Mapping für Java Wer bin ich? Stefan Wille Softwareentwickler / Architekt seit 1996 Freelancer seit 2000 Autor von Goto JavaServer Pages in 2001 Wesentliche Themen Was ist

Mehr

EclipseLink: JPA 2.0 und noch mehr

EclipseLink: JPA 2.0 und noch mehr EclipseLink: JPA 2.0 und noch mehr Berthold Maier Chef Architekt Oracle Deutschland GmbH Michael Bräuer Systemberater Oracle Deutschland GmbH Ziele Was verbirgt sich hinter EclipseLink? Wie kann ich es

Mehr

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik

Mehr

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle OO Programmiersprache vs relationales Model Vorgehen bisher Erstellen eines ER-Diagramms Übersetzen in das relationale Datenmodell Zugriff auf das relationale Datenmodell aus z.b. Java ER rel. Modell OO

Mehr

MySQL Performance Tuning für Entwickler

MySQL Performance Tuning für Entwickler MySQL Performance Tuning für Entwickler Cebit 2015, Hannover Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 18 FromDual GmbH Support Beratung remote-dba Schulung

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

Ruby on Rails. Thomas Baustert Ralf Wirdemann www.b-simple.de. Alternative zur Web-Entwicklung mit Java? 27.06.2005 www.b-simple.

Ruby on Rails. Thomas Baustert Ralf Wirdemann www.b-simple.de. Alternative zur Web-Entwicklung mit Java? 27.06.2005 www.b-simple. Ruby on Rails Alternative zur Web-Entwicklung mit Java? Thomas Baustert Ralf Wirdemann www.b-simple.de 27.06.2005 www.b-simple.de 1 Überblick Was ist Ruby on Rails? Weblog Demo Rails Komponenten Controller,

Mehr

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp <hwr@pilhuhn.de> EJB 3 Ein Blick über den Tellerrand Heiko W. Rupp Agenda Abriss des Standards Blick auf vorhandene Implementierungen Erfahrungen aus der Praxis Verlosung der 2 Bücher Agenda Abriss des

Mehr

Datenbank und Informationssysteme

Datenbank und Informationssysteme Datenbank und Informationssysteme Inhaltsverzeichnis 1 Programmierung von Datenbankzugriffen 3 1.1 Architektur des SQL/CLI am Beispiel JDBC................... 4 1.2 Anfragen und Ergebnismengen in JDBC......................

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Übungsaufgaben zur Klausurvorbereitung Datenbanken 2, SoSe 2016

Übungsaufgaben zur Klausurvorbereitung Datenbanken 2, SoSe 2016 Die nachfolgenden Aufgaben sind nach Kategorien geordnet und stellen eine Auswahl von Aufgaben aus alten Klausuren des bisherigen Bachelor-WP-Fachs Datenbank Anwendungsentwicklung dar. Kategorie 1: OR-Mapping

Mehr

Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration)

Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration) Protokoll 1: Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration) Abschnitt 2.1 (Ausführungen zum Shutdown / Startup)

Mehr

Michael Plöd Senacor Technologies AG. Performance Tuning für Hibernate und JPA-Anwendungen

Michael Plöd Senacor Technologies AG. Performance Tuning für Hibernate und JPA-Anwendungen Konferenz Michael Plöd Senacor Technologies AG Performance Tuning für Hibernate und JPA-Anwendungen Ihre Persistenzschicht? Kunde, Chef, DBA? Tuning von Hibernate und JPA Anwendungen Michael Plöd Michael

Mehr

Transaction Validation for XML Documents based on XPath

Transaction Validation for XML Documents based on XPath Transaction Validation for XML Documents based on XPath @ Informatik 2002, m-dbis Stefan Böttcher Adelhard Türling Universität Paderborn Überblick Transaktionen für XML - Daten & mobile Clients Motivation

Mehr

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de LINQ LANGUAGE INTEGREATED QUERY.net 3.5 Bernhard Grojer BernhardG@ppedv.de Agenda Übersicht LINQ Basistechnologien Verschiedene Arten von LINQ LINQ (to Objects) LINQ TO SQL Übersicht LINQ Aggregationen

Mehr

Aufbau des Beispiels. Arthur Zaczek. Feb 2015

Aufbau des Beispiels. Arthur Zaczek. Feb 2015 Arthur Zaczek Feb 2015 1 Aufbau des Beispiels 1.1 Architektur - Java Figure 1: Architektur Java 1 1.2 Architektur - CS Figure 2: Architektur C# 1.3 Java vs. CS Java: JavaFX hat Controller Aktionen werden

Mehr

IBM Informix Tuning und Monitoring

IBM Informix Tuning und Monitoring Seminarunterlage Version: 11.01 Copyright Version 11.01 vom 25. Juli 2012 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen

Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen Tom Krauß Agenda Begriffsdefinition Verfahren Praktische Beispiele Vergleich und Bewertung Begriffsklärung

Mehr

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

G s e a s m a t m ar a ch c i h tek e tur u I und IoC Gesamtarchitektur I und IoC Schichten einer Web-Anwendung Initiiert durch J2EE und Spring: Strukturierte Sicht auf UI und Fachlogik (Domäne) Ergibt 5 Schichten: Man unterscheidet Präsentations- und Domänenmodell!

Mehr

ISA Server 2004 - Best Practice Analyzer

ISA Server 2004 - Best Practice Analyzer ISA Server 2004 - Best Practice Analyzer Die Informationen in diesem Artikel beziehen sich auf: Microsoft ISA Server 2004 Seit dem 08.12.2005 steht der Microsoft ISA Server 2004 Best Practice Analyzer

Mehr

Code-Erzeugung aus UML-Klassendiagrammen

Code-Erzeugung aus UML-Klassendiagrammen Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter

Mehr

Eclipse und EclipseLink

Eclipse und EclipseLink Eclipse und EclipseLink Johannes Michler Johannes.Michler@promatis.de PROMATIS, Ettlingen Zugriff auf Oracle Datenbanken aus Eclipse RCP Anwendungen via EclipseLink 18.09.2009 1 Gliederung Eclipse als

Mehr

Integrationskonzepte für die HP Quality Center Plattform. Vivit 2009

Integrationskonzepte für die HP Quality Center Plattform. Vivit 2009 Integrationskonzepte für die HP Quality Center Plattform Thomas Jähnig Vivit 2009 Gliederung Einführung HP QualityCenter Synchronizer Plattform Implementierung eigener Adapter Alternativen Excel Import/Export

Mehr

Java Batch Der Standard für's Stapeln

Java Batch Der Standard für's Stapeln Java Batch Der Standard für's Stapeln Berlin Expert Days 18.09.2015 Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption und Realisierung von IT-Lösungen GEDOPLAN

Mehr

Persönlichkeiten bei bluehands

Persönlichkeiten bei bluehands Persönlichkeiten bei Technologien bei Skalierbare Anwendungen mit Windows Azure GmbH & co.mmunication KG am@.de; posts..de/am 1 2 3 4 5 6 7 8 9 Immer mehr Mehr Performance Mehr Menge Mehr Verfügbarkeit

Mehr

Dreamwap. Systemanalyse

Dreamwap. Systemanalyse Dreamwap Systemanalyse Änderungskontrolle Version Datum Name Bemerkung 0.1 15.7.2000 P. Troxler Initialversion 0.2 16.7.2000 P. Troxler Neue Tabelle: Kap. 2.1. Vgl. Datenbank Tabellen 0.3 18.7.2000 P.

Mehr

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

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com Next generation open source BPM JBoss jbpm 4 Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com Bernd Rücker / bernd.ruecker@camunda.com / 2 Guten Morgen Berater, Trainer, Coach Softwareentwickler

Mehr

Service Virtualisierung

Service Virtualisierung Service Virtualisierung So bekommen Sie Ihre Testumgebung in den Griff! Thomas Bucsics ANECON Software Design und Beratung G.m.b.H. Alser Str. 4/Hof 1 A-1090 Wien Tel.: +43 1 409 58 90 www.anecon.com office@anecon.com

Mehr

MySQL Queries on "Nmap Results"

MySQL Queries on Nmap Results MySQL Queries on "Nmap Results" SQL Abfragen auf Nmap Ergebnisse Ivan Bütler 31. August 2009 Wer den Portscanner "NMAP" häufig benutzt weiss, dass die Auswertung von grossen Scans mit vielen C- oder sogar

Mehr

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring Dennis Schulte / Tobias Flohre Enterprise Java Batch mit Spring Dennis Schulte Düsseldorf @denschu www.github.com/denschu blog.codecentric.de/author/dsc tel +49 (0) 1515 _ 288 2395 dennis.schulte@codecentric.de

Mehr

Tobias Flohre / Dennis Schulte codecentric AG. Spring Batch Performance und Skalierbarkeit

Tobias Flohre / Dennis Schulte codecentric AG. Spring Batch Performance und Skalierbarkeit Tobias Flohre / Dennis Schulte Spring Batch Performance und Skalierbarkeit Dennis Schulte Düsseldorf @denschu www.github.com/denschu blog.codecentric.de/author/dsc tel +49 (0) 1515 _ 288 2395 dennis.schulte@codecentric.de

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Persistenz mit Hibernate

Persistenz mit Hibernate Persistenz mit Hibernate Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Orientierung in Objekten ) Akademie ) ) Beratung ) ) Projekte ) Schulungen, Coaching, Weiterbildungsberatung,

Mehr

Inhaltsverzeichnis. Lutz Fröhlich. PostgreSQL 9. Praxisbuch für Administratoren und Entwickler. ISBN (Buch): 978-3-446-42239-1

Inhaltsverzeichnis. Lutz Fröhlich. PostgreSQL 9. Praxisbuch für Administratoren und Entwickler. ISBN (Buch): 978-3-446-42239-1 Inhaltsverzeichnis Lutz Fröhlich PostgreSQL 9 Praxisbuch für Administratoren und Entwickler ISBN (Buch): 978-3-446-42239-1 ISBN (E-Book): 978-3-446-42932-1 Weitere Informationen oder Bestellungen unter

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL XAMPP-Systeme Teil 3: My SQL Daten Eine Wesenseigenschaft von Menschen ist es, Informationen, in welcher Form sie auch immer auftreten, zu ordnen, zu klassifizieren und in strukturierter Form abzulegen.

Mehr

Einführung: Lasttests mit JMeter. Sitestress.eu Jesuitenmauer 24 33098 Paderborn www.sitestress.eu - karl@sitestress.eu - 05251 / 687060

Einführung: Lasttests mit JMeter. Sitestress.eu Jesuitenmauer 24 33098 Paderborn www.sitestress.eu - karl@sitestress.eu - 05251 / 687060 Einführung: Lasttests mit JMeter Agenda Über SITESTRESS.EU Tests planen Warum Lasttests? Testen Was ist JMeter? Ergebnisse analysieren Wie arbeitet JMeter? Beispiel JMeter-GUI Skripte für JMeter über SITESTRESS.EU

Mehr

GWI Research. Gesellschaft für Wirtschaftsberatung und Informatik

GWI Research. Gesellschaft für Wirtschaftsberatung und Informatik Gesellschaft für Wirtschaftsberatung und Informatik GWI CO 2 Technologie Component Oriented ORBIS Was ist die CO 2 Technologie? Architektur zur Entwicklung plattformunabhängiger DB- Applikationen unter

Mehr

JDO Java Data Objects

JDO Java Data Objects JDO Java Data Objects Ralf Degner, Chief Consultant Ralf.Degner@poet.de Agenda POET Motivation Geschichte Einführung Architekturen FastObjects POET Gegründet 1993 Zwei Produktlinien esupplier Solutions:

Mehr

NHibernate vs. Entity Framework

NHibernate vs. Entity Framework Manfred Steyer CAMPUS 02 softwarearchitekt.at NHibernate vs. Entity Framework Ziele NHibernate und Entity Framework sowie deren Unterschiede kennen lernen 1 Agenda Kriterien Beispiel mit EF Beispiel mit

Mehr

Scaling Rails. Jonathan Weiss, 02.09.2009 Peritor GmbH

Scaling Rails. Jonathan Weiss, 02.09.2009 Peritor GmbH Scaling Rails Jonathan Weiss, 02.09.2009 Peritor GmbH Scaling Rails 2 Scaling Rails 3 Rails 4 Performance Wikipedia: Das Wort Leistung (engl. Performance) wird in der Informatik verwendet, um das Vermögen

Mehr

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at DB2 & SQL E I N F Ü H R U N G T U N I N G O P T I M I E R U N G S E C R E T S ANDREAS PROUZA andreaspr@aon.at andreas@prouza.at http://www.prouza.at Wien, 2015-03-27 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis...

Mehr

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Datenbanken Konsistenz und Mehrnutzerbetrieb III Datenbanken Konsistenz und Mehrnutzerbetrieb III 1. Oracle Architektur! Komponenten des Oracle Servers! Zugriff über Netzwerk 2. Zugriffsrechte! Starten und Schließen der Datenbank! Nutzer und Rollen!

Mehr

Performance Analyses with inspectit

Performance Analyses with inspectit Performance Analyses with inspectit 23.03.2012 Über uns Beratungsschwerpunkte Performanceanalyse und -optimierung, Application Monitoring, Lastund Performancetests Architekturberatung Java-basierte Anwendungsentwicklung

Mehr

Architektur des agimatec-validation Frameworks

Architektur des agimatec-validation Frameworks Development : Implementierung Validierungskonzept (Dokumentation) This page last changed on Apr 03, 2008 by roman.stumm. Architektur des agimatec-validation Frameworks Generierung der Metainformationen

Mehr

WebSphere Portal 8 Migrationen

WebSphere Portal 8 Migrationen WebSphere Portal 8 Migrationen Enrico Regge IT Specialist reggeenr@de.ibm.com André Hagemeier IT Specialist andre.hagemeier@de.ibm.com 2014 IBM Corporation Agenda Suche & Security Theme WCM Applikationen

Mehr

Java Pet Store vs..net Pet Shop. Seminar Software-Entwurf Jörg Eggermann

Java Pet Store vs..net Pet Shop. Seminar Software-Entwurf Jörg Eggermann <Eggermann@hosterme.de> Java Pet Store vs..net Pet Shop Seminar Software-Entwurf Jörg Eggermann Gliederung Motivation Einordnung Einschub - Enterprise Java Beans Anwendungen in der Übersicht Java Pet Store.NET

Mehr

Projekt Weblog :: Integration

Projekt Weblog :: Integration Projekt Weblog :: Integration Die Implementation des Formhandling Frameworks wird nun im Projekt Weblog integriert. Dafür stehen 2 Möglichkeiten zur Auswahl. Sie haben Ihre eigene Implementation der Actions,

Mehr

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter SQLJ Standardisierte Java-DB DB-Schnittstelle Spezifikationen Part 0: Embedded SQL für Java (ANSI-Standard; Object Language Binding) Statische Einbettung von SQL-Anweisungen in Java-Quelltext Part 1: Java

Mehr

Infinispan - NoSQL für den Enterprise Java Alltag

Infinispan - NoSQL für den Enterprise Java Alltag Infinispan - NoSQL für den Enterprise Java Alltag Version: 1.1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Gliederung NoSQL und Java EE Infinispan Integrationsszenarien

Mehr

Oracle GridControl Tuning Pack. best Open Systems Day April 2010. Unterföhring. Marco Kühn best Systeme GmbH marco.kuehn@best.de

Oracle GridControl Tuning Pack. best Open Systems Day April 2010. Unterföhring. Marco Kühn best Systeme GmbH marco.kuehn@best.de Oracle GridControl Tuning Pack best Open Systems Day April 2010 Unterföhring Marco Kühn best Systeme GmbH marco.kuehn@best.de Agenda GridControl Overview Tuning Pack 4/26/10 Seite 2 Overview Grid Control

Mehr

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com Prozessautomatisierung mit BPMN 2.0 und Java bernd.ruecker@camunda.com Bernd Rücker camunda services GmbH Demo Was ist Prozessautomatisierung mit BPMN 2.0 Prozessautomatisierung mit Process Engine Monitoring

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Hardware versus Brainware

Hardware versus Brainware Software & Informatik Hardware versus Brainware Lothar Flatz Senior Principal Consultant Anatomie eines SQL Befehls Ich stelle mich vor... Wer bin ich? über 25 Jahre Oracle Database Erfahrung (beginnend

Mehr

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme Tillmann Schall, anaptecs GmbH : Agenda Grundlagen modellgetriebener Entwicklungsprozesse Schritte zur Einführung Erfahrungen

Mehr

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller 2002 131

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller 2002 131 Architekturen Von der DB basierten zur Multi-Tier Anwendung DB/CRM (C) J.M.Joller 2002 131 Lernziele Sie kennen Design und Architektur Patterns, welche beim Datenbankzugriff in verteilten Systemen verwendet

Mehr

PostgreSQL im praktischen Einsatz. Stefan Schumacher

PostgreSQL im praktischen Einsatz. Stefan Schumacher PostgreSQL im praktischen Einsatz 2. Brandenburger Linux Infotag 2005 Stefan Schumacher , PGP Key http:/// $Header: /home/daten/cvs/postgresql/folien.tex,v 1.11 2005/04/25

Mehr

Erste Schritte, um selber ConfigMgr Reports zu erstellen

Erste Schritte, um selber ConfigMgr Reports zu erstellen Thomas Kurth CONSULTANT/ MCSE Netree AG thomas.kurth@netree.ch netecm.ch/blog @ ThomasKurth_CH Erste Schritte, um selber ConfigMgr Reports zu erstellen Configuration Manager Ziel Jeder soll nach dieser

Mehr

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH Erfahrungen und Erkenntnisse Klaus Richarz, HBT GmbH Java Enterprise Edition 5.0 JBoss Seam Konsequenzen für Realisierung Qualitätssicherung Build & Deployment Fazit & Empfehlungen JBoss Seam in Projekten,

Mehr

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013 GTUG Java Arbeitskreis Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung September 2013 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Agenda Was ist OmnivoBase?

Mehr

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring? oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Workstations. Server. Recovery Log. Database. SQL Queries. Query Processing Object Mgmt. Transaction Mgmt. Buffer Mgmt. I/O Layer

Workstations. Server. Recovery Log. Database. SQL Queries. Query Processing Object Mgmt. Transaction Mgmt. Buffer Mgmt. I/O Layer Client-Server Architekturen: Query Shipping Grundprinzip 1. Client schickt Anfrage zum Server 2. Server schickt Ergebnisse der Anfrage zuruck Workstations Application Interface Layer SQL Queries Query

Mehr