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
Spring Data Repositories - A Deep Dive
Search
Oliver Drotbohm
October 17, 2012
Programming
2
610
Spring Data Repositories - A Deep Dive
Slides of my talk at SpringOne2GX 2012.
Oliver Drotbohm
October 17, 2012
Tweet
Share
More Decks by Oliver Drotbohm
See All by Oliver Drotbohm
What's new in Spring Modulith?
olivergierke
1
270
Domain-centric? Why Hexagonal and Onion Architecture Are Answers to the Wrong Question
olivergierke
4
1.9k
It Takes Two to Tango – Designing Module Interactions in Modulithic Spring Applications
olivergierke
5
790
Bottom-Up Architecture – Bridging the Achitecture Code Gap
olivergierke
4
1k
Spring Modulith – A Deep Dive
olivergierke
9
5.2k
Spring for the Architecturally Curious Developer
olivergierke
5
1.9k
Spring Boot 3 & Spring Framework 6
olivergierke
4
2.1k
Architecturally-evident Java Applications with jMolecules
olivergierke
9
3.1k
A Deep Dive into Spring Application Events
olivergierke
12
3.5k
Other Decks in Programming
See All in Programming
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
420
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
170
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
230
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
270
Feature Toggle は捨てやすく使おう
gennei
0
340
Codex の「自走力」を高める
yorifuji
0
1.3k
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
190
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
150
AI 開発合宿を通して得た学び
niftycorp
PRO
0
170
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
100
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
390
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
190
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
560
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Unsuck your backbone
ammeep
672
58k
Ruling the World: When Life Gets Gamed
codingconduct
0
180
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
290
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
490
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
150
Become a Pro
speakerdeck
PRO
31
5.9k
Un-Boring Meetings
codingconduct
0
240
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Transcript
Spring Data Repositories A Deep Dive Oliver Gierke, Senior Member
Technical Staff
[email protected]
- @olivergierke © 2012 SpringOne 2GX. All rights reserved. Do not distribute without permission.
2 Oliver Gierke Spring Source engineer Project lead Core/JPA/MongoDB
[email protected]
www.olivergierke.de olivergierke
3 Spring Data Modern Data Access For Enterprise Java NoSQL
JPA JDBC Redis Big Data Hadoop HBase MongoDB Neo4j REST exporter Roo Hive Pig Querydsl Repositories 1 free copy per attendee! Gemfire Splunk
4 Hands on
Sample code https://github.com/olivergierke/repositories-deepdive 5
6 Step 0 Initial project setup
7 Summary Use kickstart projects to ease setup
8 Step 1 Basic JPA infrastructure setup
9 " Persistence technology of choice is JPA. e application
uses JavaConfig and sample data contained in data.sql.
10 Summary Easy setup through JavaConfig XML-less JPA configuration
11 Step 2 Quickstart
12 " e implementation of the persistence layer will be
based on the Spring Data repositories abstraction. Customers can be saved, looked up by their id, email address.
13 Summary Interface-based programming model No implementation required Queries derived
from method names
14 Step 3 Extended CRUD methods
15 " Customers can be deleted and obtained all at
once.
16 Summary Switched to CrudRepository Exposed CRUD methods Broad API
exposed
17 Step 4 Pagination
18 " Customers can be accessed page by page.
19 Summary Switched to PagingAndSortingRepository Exposed CRUD methods and paging
ones Broad API exposed
20 Step 5 Re-declaring existing CRUD methods
21 " CustomerRepository.findAll() should rather return a List. e transaction
timeout for save(…) should be customized to 10 seconds.
22 Summary Re-declare methods to customize Return types Annotation config
(Tx, Locking)
23 Step 6 Introducing a read-only repository base interface
24 " Orders shall be accessible in read-only mode only.
25 Summary Craft custom base interface Return types Annotation config
(Tx, Locking)
26 Step 7 Using manually defined queries
27 " As a user, I want to look up
products by their custom attributes.
28 Summary @Query annotation JPA named queries Spring Data named
queries
29 Step 8 Flexible predicate execution
30 " As a user, I want to search for
customers by first name, last name, email address and any combination of them
31 Summary Querydsl - type safe queries for Java QuerydslPredicateExecutor
Side track: Repository proxies 32
Proxy mechanism Using Spring's JDK proxy support Bootstrap through Factory
Spring FactroyBean / CDI XML namespace / @EnableRepositories 33
Proxy mechanism Query interface CRUD implementation class QueryDslPredicateExecutor Custom implementation
extension 34
35 Step 9 Custom implementations for repositories
36 " As an admin user, I'd like to delete
all products beyond a given price.
37 Summary Provide custom implementation Base class support (Querydsl)
Stuff on top Spring MVC integration Spring Data REST Spring
Roo 38
Up and beyond 39
40 Supported modules JPA MongoDB Neo4j Gemfire
41 Community implementations Spring Data Solr FuzzyDB (Cassandra)
42 Further sessions Spring Data and Data Grids - Wed,
12:45pm Spring Data Neo4j - Wed, 2:45pm Lightning Talks - Wed, 4:30pm Spring Data REST - Thu, 12:45pm
Summary 43
Interface-based programming model 44
Start simple, get more sophisticated 45
Declarative query execution 46
Flexible predicate execution 47
Custom implementation 48
CDI integration 49