Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scaling Up Hibernate/JPA Applications with Infi...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Galder Zamarreño
April 20, 2013
Technology
210
0
Share
Scaling Up Hibernate/JPA Applications with Infinispan Second-Level Cache
Galder Zamarreño
April 20, 2013
More Decks by Galder Zamarreño
See All by Galder Zamarreño
Principles and Patterns for Streaming Data Analysis
galderz
0
130
Streaming Data Analysis with Kubernetes
galderz
0
2.6k
The Rough Guide to Java RPC Frameworks
galderz
1
7.1k
Streaming Data Analysis with Kubernetes
galderz
1
440
Streaming Data Workshop @ Codemotion Madrid
galderz
0
1.5k
Streaming Data : ni pierdas el tren, ni esperes en balde
galderz
0
3.1k
Data grids : descubre qué esconden los datos
galderz
0
3.2k
Streaming Data Workhop @ Devoxx
galderz
0
380
Streaming Data Analysis with Kubernetes
galderz
0
2.1k
Other Decks in Technology
See All in Technology
ボトムアップの改善の火を灯し続けろ!〜支援現場で学んだ、消えないための3つの打ち手〜 / 20260509 Kazuki Mori
shift_evolve
PRO
2
600
The 7 pitfalls of AI
ufried
0
200
アプリブロック機能のつくりかたと、AIとHTMLの不合理な相性の良さについて
kumamotone
1
220
雑談は、センサーだった
bitkey
PRO
2
220
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
100k
生成AIはソフトウェア開発の革命か、ソフトウェア工学の宿題再提出なのか -ソフトウェア品質特性の追加提案-
kyonmm
PRO
2
870
AIエージェントの支払い基盤 AgentCore Payments概要
kmiya84377
1
150
ブラウザの投機的読み込みと投機ルールAPIを理解し、Webサービスのパフォーマンスを最適化する
shuta13
3
300
PdM・Eng・QAで進めるAI駆動開発の現在地/aidd-with-pdm-eng-qa
shota_kusaba
0
150
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
3
130
毎日の作業を Claude Code 経由にしたら、 ノウハウがコードになった
kossykinto
1
1.2k
Tachikawa.any 運営挨拶
daitasu
0
140
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Heart Work Chapter 1 - Part 1
lfama
PRO
6
35k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
110
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Abbi's Birthday
coloredviolet
2
7.5k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
180
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
290
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
170
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Transcript
None
Scaling Up Hibernate/JPA Applications with Infinispan Second-Level Cache ! Galder
Zamarreño Senior Software Engineer Red Hat, Inc ! 20th April 2013, São Paulo
Galder Zamarreño • R&D Engineer, Red Hat Inc. • Infinispan
developer • Creator of Infinispan second-level cache provider for Hibernate • Escalante founder and lead • Twitter: @galderz
Agenda • Bottlenecks in Hibernate/JPA applications • Applying caching techniques
sensibly • Distribute caches across multiple nodes • Caching in managed environments
Why do we care?
DB = bottleneck Most Hibernate/JPA applications involve intensive I/O workload
against database
Bottleneck problems Bottlenecks decrease throughput, increase latency... and make users
:(((
We care because we want to make users :))
How do we scale up Hibernate/JPA applications ?
Option 1: $$$ Buy/rent more powerful hardware to host the
DB... who can afford that?
Option 2: Caching Use second-level caching sensibly to reduce burden
on database
Second Level Cache JVM-level, or clustered, cache whose contents can
be shared between different transactions
Lesson 1: Don't apply caching blindly! Always measure first!
Caching cost! Local caches have a cost (memory, GC), clustered
caches add more cost (network, IO)
Demo 1: Measure performance
Lesson 2: Think what you are going to cache!
Think about reads Biggest performance gain comes from caching read-
mostly data
What kind of data? Entities, collections of entities, and query
results can be cached
Entity caching Mark entities cacheable, and define the cache concurrency
strategy
Query caching Speed up execution of repeated queries (w/ same
parameters) by caching their results
Query results validity Cached query results are valid as long
as none of the entity types involved are updated
Demo 2: Query cache in action
Lesson 3: How to select a caching provider
Cache Strategies • Read-only • data never updated • insert/delete
allowed • Read/write • data can be updated • with JBDC transactions or no transactions
Cache Strategies • Nonstrict read/write • data rarely updated •
with JBDC transactions or no transactions • Transactional • data can be updated • for JTA environments
Strategy Support Provider / Strategy read- only nonstrict r/w r/w
transactional Infinispan yes no no yes EhCache yes yes yes yes ConcurretHashMap (testing) yes yes yes no
Lesson 4: Scale up your Hibernate/JPA app going multi-node!
Caches form cluster Infinispan uses JGroups to form a peer-to-peer
cluster, providing discovery, failure detection...etc
Clustered Entities Recommended using invalidation to keep entities consistent accross
cluster (replication can be used too)
Queries / Timestamps Recommended keeping query cache local to each
node, but must replicate update timestamps cache
Demo 3: Clustered second-level cache in action!
Lesson 5: Scaling up JPA in managed environments
JPA Caching simplified Infinispan as default cache provider (with sensible
defaults), and ready to cluster!
shared-cache-mode Persistence unit configuration option that should be set to
ENABLE_SELECTIVE
Demo 4: JPA caching in JBoss AS 7
Summary Q - How do we scale up Hibernate/JPA applications?
Enable second level cache!!
Summary • Don't apply caching blindly! Always measure first! •
Think what you are going to cache! • How to select a caching provider • Scale up your app going multi-node! • Scaling up JPA in managed environments
Questions • http://infinispan.org • http://hibernate.org • http://github.com/galderz/secondlc • https://docs.jboss.org/author/display/ ISPN/Using+Infinispan+as+JPA-Hibernate
+Second+Level+Cache+Provider