SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
CACHING in
Hibernate
Michael Plöd
Principal Architect @ innoQ
@bitboss
michael.ploed@innoq.com
Wichtige
Themen
1st Level Cache 2nd Level Cache
Query Cache Interfaces
Weitere
Themen
Flush Verhalten Isolation Levels
Cache

Infrastruktur
Best

Practices
Aufbau 

des mehrschichtigen 

Caching-Systems
Anwendung
1st level cache
2nd level cache
DB
Die Anwendung interagiert mit der Session
Jede Session ist ein 1st level cache
Der 2nd level cache bedient alle Sessions

einer SessionFactory
Der Datenbank Cache hat nichts mit 

Hibernate zu tun
LOOKUP
Lifecyle
Wie werden Entitäten geladen?
Befindet sich die 

Entität
in der Session
Befindet sich die 

Entität
im 2nd Level Cache
Datenbank

Zugriff
1st level
Cache
1st level
Cache
Der 1st Level Cache entspricht der Session / dem Entity
Manager und wird auch Persistenz Context genannt.
Es gibt keine Eviction Policy. Wir als Entwickler müssen
uns um den 1st Level Cache kümmern
ACHTUNG!
Der Persistenz Kontext wird im Laufe der Zeit immer größer
Diät Tips?


Grundregeln:
ORMs sind keine guten Batch-Tools

Regelmässiges Flush & Clear

JDBC-Batch Size
Code
DEMO
2nd level
Cache
2nd level
Cache
Der 2nd Level Cache ist nicht auf die Session / den Entity
Manager gescoped sondern auf die jeweiligen Factories
Hibernate sieht für die Interaktion mit dem 2nd Level
Cache lediglich Mappings, Konfiguration und Interfaces
vor
Persistenz Kontext A
First Level Cache
Persistenz Kontext B Persistenz Kontext C
Second Level Cache
Cache Concurrency Strategy Query Cache
Cache Implementierung
Klassen Cache

Region
Collection Cache

Region
Query Cache

Region
Update Timestamps
Cache Region
Details


Unterhalb der

Spitze des 

Eisbergs
Der 2nd Level Cache ist
optional
Muss via Config und
Annotations aktiviert werden
Anbindung von Cache
Providern via SPI
Konfiguration


<property name="cache.provider_class">

org.hibernate.cache.internal.NoCacheProvider

</property>


<property name="cache.provider_class">

org.hibernate.cache.ehcache.EhCacheRegionFactory 

</property>
Entitieswerden von Hibernate
nicht automatisch
gecached
javax.persistence.sharedCache.mode
ENABLE_SELECTIVE
Entitäten werden nicht gecached, ausser sie
werden als cachable markiert
DISABLE_SELECTIVE
Entitäten werden gecached, ausser sie werden
als nicht-cachable markiert
ALL Alle Entitäten werden immer gecached
NONE Entitäten werden niemals gecached
Mapping
@Entity
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Person { ... }
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public Set<Person> getPersons() {
return persons;
}
Concurrency Strategies
Read Only Für rein lesenden Zugriff
Read / Write
•Read Committed Isolation Level
•In JTA Umgebung muss Transaktions-Manager
Lookup konfiguriert sein
•Im Cluster muss die Cache Implementierung
Locking unterstützen
Nonstrict Read / Write
•Keine Konsistenz Garantie
•Geeignet für Daten die sich wenig ändern
•In JTA Umgebung muss Transaktions-Manager
Lookup konfiguriert sein
•
Transactional
•Repeatable Read Isolation Level
•In JTA Umgebung muss Transaktions-Manager
Lookup konfiguriert sein
Cache API
sessionFactory.evict(Person.class, id);


sessionFactory.evict(Person.class);

sessionFactory.evictCollection("Person.adressen", personId);

sessionFactory.evictCollection(„Person.adressen");



session.setCacheMode(CacheMode.PUT)

Cache Modes
NORMAL
Die Session liest und Schreibt Daten aus / in
den 2nd Level Cache
GET
Die Session liest aus dem 2nd Level Cache und
führt nur Updates (keine Puts) aus
PUT
Die Session liest nicht aus dem 2nd Level Cache,
schreibt aber Daten hinein
REFRESH
Die Session liest nicht aus dem 2nd Level Cache,
schreibt nur Updates hinein
Code
DEMO
Query
Cache
Query
Cache
Der Query Cache gehört zum 2nd Level Cache und zielt
nicht auf Entitäten sondern auf Ergebnisse von HQL /
Criteria Abfragen ab
Der Query Cache muss neben dem 2nd Level Cache
zusätzlich in der globalen Konfiguration und auf jeder zu
cachenden Query aktiviert werden
Konfiguration


<property name=„cache.use_query_cache">

true

</property>
session.createQuery(…)

.setCacheable(true)
.setCacheRegion(…)
Michael Plöd
Principal Architect @ innoQ
@bitboss
michael.ploed@innoq.com
Vielen Dank

Weitere ähnliche Inhalte

Andere mochten auch

Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Michael Plöd
 
BootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die MotorhaubeBootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die MotorhaubeOPITZ CONSULTING Deutschland
 
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!DevDay Dresden
 
Anatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenAnatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenMichael Plöd
 
Event Sourcing: Einführung und Best Practices
Event Sourcing: Einführung und Best PracticesEvent Sourcing: Einführung und Best Practices
Event Sourcing: Einführung und Best PracticesMichael Plöd
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
Les Français et l’accession à la propriété
Les Français et l’accession à la propriétéLes Français et l’accession à la propriété
Les Français et l’accession à la propriétéMonimmeuble.com
 
Facebook et communication
Facebook et communicationFacebook et communication
Facebook et communicationSaïd Ghanem
 
Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014
Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014
Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014Le Cube - Connectons nos Ecoles
 
Silva josé luis problemas de aprendizaje (2)
Silva josé luis problemas de aprendizaje (2)Silva josé luis problemas de aprendizaje (2)
Silva josé luis problemas de aprendizaje (2)jose luis silva maya
 
10 stand ict spring
10 stand ict spring10 stand ict spring
10 stand ict springSacha Robert
 
¿Como usar el buscador Google de forma eficiente?
¿Como usar el buscador Google de forma eficiente? ¿Como usar el buscador Google de forma eficiente?
¿Como usar el buscador Google de forma eficiente? Abel Sebastian
 
Multikulturelle Gesellschaft
Multikulturelle GesellschaftMultikulturelle Gesellschaft
Multikulturelle GesellschaftMarcel Schöne
 
User Experience im Katalog 2.0
User Experience im Katalog 2.0User Experience im Katalog 2.0
User Experience im Katalog 2.0Zukunftswerkstatt
 
Rechenzentrum - Hosting – Providing – ISP –
Rechenzentrum - Hosting – Providing – ISP – Rechenzentrum - Hosting – Providing – ISP –
Rechenzentrum - Hosting – Providing – ISP – Marcel Schöne
 

Andere mochten auch (20)

Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3
 
BootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die MotorhaubeBootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die Motorhaube
 
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
 
Anatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenAnatomie von Microservice Landschaften
Anatomie von Microservice Landschaften
 
Event Sourcing: Einführung und Best Practices
Event Sourcing: Einführung und Best PracticesEvent Sourcing: Einführung und Best Practices
Event Sourcing: Einführung und Best Practices
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Horizon
HorizonHorizon
Horizon
 
Les Français et l’accession à la propriété
Les Français et l’accession à la propriétéLes Français et l’accession à la propriété
Les Français et l’accession à la propriété
 
Mktech
MktechMktech
Mktech
 
Facebook et communication
Facebook et communicationFacebook et communication
Facebook et communication
 
Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014
Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014
Sélection d'applications pour les enfants de 6 à 11 ans - Octobre 2014
 
Silva josé luis problemas de aprendizaje (2)
Silva josé luis problemas de aprendizaje (2)Silva josé luis problemas de aprendizaje (2)
Silva josé luis problemas de aprendizaje (2)
 
10 stand ict spring
10 stand ict spring10 stand ict spring
10 stand ict spring
 
Bilan d'activité
Bilan d'activitéBilan d'activité
Bilan d'activité
 
¿Como usar el buscador Google de forma eficiente?
¿Como usar el buscador Google de forma eficiente? ¿Como usar el buscador Google de forma eficiente?
¿Como usar el buscador Google de forma eficiente?
 
PréSentation
PréSentationPréSentation
PréSentation
 
Opensat
OpensatOpensat
Opensat
 
Multikulturelle Gesellschaft
Multikulturelle GesellschaftMultikulturelle Gesellschaft
Multikulturelle Gesellschaft
 
User Experience im Katalog 2.0
User Experience im Katalog 2.0User Experience im Katalog 2.0
User Experience im Katalog 2.0
 
Rechenzentrum - Hosting – Providing – ISP –
Rechenzentrum - Hosting – Providing – ISP – Rechenzentrum - Hosting – Providing – ISP –
Rechenzentrum - Hosting – Providing – ISP –
 

Ähnlich wie Caching in Hibernate

Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"schellsoft
 
Workshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GAWorkshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GAOliver Belikan
 
Ausgewählte Performance Technologien
Ausgewählte Performance TechnologienAusgewählte Performance Technologien
Ausgewählte Performance Technologienoraclebudb
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateThorben Janssen
 
Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Michael Romer
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"schellsoft
 
Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014inovex GmbH
 

Ähnlich wie Caching in Hibernate (7)

Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"
 
Workshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GAWorkshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GA
 
Ausgewählte Performance Technologien
Ausgewählte Performance TechnologienAusgewählte Performance Technologien
Ausgewählte Performance Technologien
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
 
Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
 
Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014
 

Mehr von Michael Plöd

Event Sourcing: Introduction & Challenges
Event Sourcing: Introduction & ChallengesEvent Sourcing: Introduction & Challenges
Event Sourcing: Introduction & ChallengesMichael Plöd
 
Event Sourcing für reaktive Anwendungen
Event Sourcing für reaktive AnwendungenEvent Sourcing für reaktive Anwendungen
Event Sourcing für reaktive AnwendungenMichael Plöd
 
CQRS basierte Architekturen mit Microservices
CQRS basierte Architekturen mit MicroservicesCQRS basierte Architekturen mit Microservices
CQRS basierte Architekturen mit MicroservicesMichael Plöd
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESMichael Plöd
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Michael Plöd
 
Bessere Präsentationen
Bessere PräsentationenBessere Präsentationen
Bessere PräsentationenMichael Plöd
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Michael Plöd
 

Mehr von Michael Plöd (7)

Event Sourcing: Introduction & Challenges
Event Sourcing: Introduction & ChallengesEvent Sourcing: Introduction & Challenges
Event Sourcing: Introduction & Challenges
 
Event Sourcing für reaktive Anwendungen
Event Sourcing für reaktive AnwendungenEvent Sourcing für reaktive Anwendungen
Event Sourcing für reaktive Anwendungen
 
CQRS basierte Architekturen mit Microservices
CQRS basierte Architekturen mit MicroservicesCQRS basierte Architekturen mit Microservices
CQRS basierte Architekturen mit Microservices
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework?
 
Bessere Präsentationen
Bessere PräsentationenBessere Präsentationen
Bessere Präsentationen
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6
 

Caching in Hibernate