6. 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
10. 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
15. 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
16. 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
17.
Unterhalb der
Spitze des
Eisbergs
Der 2nd Level Cache ist
optional
Muss via Config und
Annotations aktiviert werden
Anbindung von Cache
Providern via SPI
22. 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
24. 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
27. 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