SlideShare a Scribd company logo
@vlad_mihalcea vladmihalcea.com
High-Performance
Hibernate
VLAD MIHALCEA
@vlad_mihalcea vladmihalcea.com
About me
vladmihalcea.com
@vlad_mihalcea vladmihalcea.com
Performance Facts
“More than half of application performance
bottlenecks originate in the database”
AppDynamics - http://www.appdynamics.com/database/
@vlad_mihalcea vladmihalcea.com
Google Ranking
“Like us, our users place a lot of value in speed –
that's why we've decided to take site speed
into account in our search rankings”
https://webmasters.googleblog.com/2010/04/using-site-speed-in-web-search-ranking.html
@vlad_mihalcea vladmihalcea.com
Performance and Revenue
“It has been reported that every 100ms of latency
costs Amazon 1% of profit”
http://radar.oreilly.com/2008/08/radar-theme-web-ops.html
@vlad_mihalcea vladmihalcea.com
Agenda
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching
@vlad_mihalcea vladmihalcea.com
The anatomy of a database transaction
@vlad_mihalcea vladmihalcea.com
Response Time
• connection acquisition time
• statement submit time
• statement execution time
• result set fetching time
• idle time prior to releasing database connection
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
@vlad_mihalcea vladmihalcea.com
Agenda
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching
@vlad_mihalcea vladmihalcea.com
Connection Management
Metric DB_A (ms) DB_B (ms) DB_C (ms) DB_D (ms) HikariCP (ms)
min 11.174 5.441 24.468 0.860 0.001230
max 129.400 26.110 74.634 74.313 1.014051
mean 13.829 6.477 28.910 1.590 0.003458
p99 20.432 9.944 54.952 3.022 0.010263
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
@vlad_mihalcea vladmihalcea.com
Connection Providers
@vlad_mihalcea vladmihalcea.com
DataSourceConnectionProvider
@vlad_mihalcea vladmihalcea.com
Connection Provisioning
@vlad_mihalcea vladmihalcea.com
FlexyPool
• concurrent connections
• concurrent connection requests
• connection acquisition time
• connection lease time histogram
• maximum pool size
• overflow pool size
• retries attempts
• total connection acquisition time
• Java EE
• Bitronix / Atomikos
• Apache DBCP / DBCP2
• C3P0
• BoneCP
• HikariCP
• Tomcat CP
• Vibur DBCP
https://github.com/vladmihalcea/flexy-pool
@vlad_mihalcea vladmihalcea.com
FlexyPool – Concurrent connection requests
1
28
55
82
109
136
163
190
217
244
271
298
325
352
379
406
433
460
487
514
541
568
595
622
649
676
703
730
757
784
811
838
865
892
919
946
973
1000
1027
0
2
4
6
8
10
12
Sample time (Index × 15s)
Connectionrequests
max mean p50 p95 p99
@vlad_mihalcea vladmihalcea.com
FlexyPool – Pool size growth
1
28
55
82
109
136
163
190
217
244
271
298
325
352
379
406
433
460
487
514
541
568
595
622
649
676
703
730
757
784
811
838
865
892
919
946
973
1000
1027
0
1
2
3
4
5
6
Sample time (Index × 15s)
Maxpoolsize
max mean p50 p95 p99
@vlad_mihalcea vladmihalcea.com
FlexyPool – Connection acquisition time
1
28
55
82
109
136
163
190
217
244
271
298
325
352
379
406
433
460
487
514
541
568
595
622
649
676
703
730
757
784
811
838
865
892
919
946
973
1000
1027
0
500
1000
1500
2000
2500
3000
3500
Sample time (Index × 15s)
Connectionacquisitiontime(ms)
max mean p50 p95 p99
@vlad_mihalcea vladmihalcea.com
FlexyPool – Connection lease time
1
29
57
85
113
141
169
197
225
253
281
309
337
365
393
421
449
477
505
533
561
589
617
645
673
701
729
757
785
813
841
869
897
925
953
981
1009
1037
0
5000
10000
15000
20000
25000
30000
35000
40000
Sample time (Index × 15s)
Connectionleasetime(ms)
max mean p50 p95 p99
@vlad_mihalcea vladmihalcea.com
Connection acquisition
@vlad_mihalcea vladmihalcea.com
Resource-local connection acquisition
@vlad_mihalcea vladmihalcea.com
Immediate connection acquisition issue
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void importForecasts(String dataFilePath) {
Document forecastXmlDocument = readXmlDocument( dataFilePath );
List<Forecast> forecasts = parseForecasts(forecastXmlDocument);
for(Forecast forecast : forecasts) {
entityManager.persist( forecast );
}
}
@vlad_mihalcea vladmihalcea.com
Resource-local delay connection acquisition
<property
name="hibernate.connection.provider_disables_autocommit"
value="true"
/>
• Hibernate 5.2.10 introduced resource-local delay connection
acquisition
• Requires the DataSource to disable auto-commit
@vlad_mihalcea vladmihalcea.com
Resource-local connection acquisition
@vlad_mihalcea vladmihalcea.com
Agenda
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching
@vlad_mihalcea vladmihalcea.com
JPA Identifier Generators
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
• IDENTITY
• SEQUENCE
• TABLE
• AUTO
@vlad_mihalcea vladmihalcea.com
IDENTITY
• In Hibernate, IDENTITY generator disables JDBC batch inserts
• MySQL 8.0 does not offer support for database SEQUENCE
• MariaDB 10.3 adds support for SEQUENCE objects
@vlad_mihalcea vladmihalcea.com
SEQUENCE
• Oracle, PostgreSQL, and even SQL Server 2012
• May use roundtrip optimizers: hi/lo, pooled, pooled-lo
• By default, Hibernate 5 uses the enhanced sequence generators
<property
name="hibernate.id.new_generator_mappings"
value="true"/>
@vlad_mihalcea vladmihalcea.com
The pooled optimizer
@Id
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "pooled"
)
@SequenceGenerator(
name = "pooled",
allocationSize = 3
)
private Long id;
@vlad_mihalcea vladmihalcea.com
The pooled optimizer
@vlad_mihalcea vladmihalcea.com
The pooled optimizer
@vlad_mihalcea vladmihalcea.com
The pooled optimizer
@vlad_mihalcea vladmihalcea.com
The pooled optimizer
@vlad_mihalcea vladmihalcea.com
The pooled optimizer
@vlad_mihalcea vladmihalcea.com
SEQUENCE - Pooled optimizer (50 rows)
1 5 10 50
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
Sequence increment size
Time(ms)
@vlad_mihalcea vladmihalcea.com
TABLE
• Uses row-level locks and a separate transaction/connection
• May use roundtrip optimizers: hi/lo, pooled, pooled-lo
• By default, Hibernate 5 uses the enhanced sequence generators
<property
name="hibernate.id.new_generator_mappings"
value="true"/>
@vlad_mihalcea vladmihalcea.com
TABLE - Pooled optimizer (50 rows)
1 5 10 50
0
0.5
1
1.5
2
2.5
3
Table increment size
Time(ms)
@vlad_mihalcea vladmihalcea.com
IDENTITY vs TABLE (100 rows)
• IDENTITY makes no use of batch inserts
• TABLE generator using a pooled optimizer with an increment size of
100
@vlad_mihalcea vladmihalcea.com
IDENTITY vs TABLE (100 rows)
1 2 4 8 16
0
500
1000
1500
2000
2500
Thread count
Time(ms)
Identity Table
@vlad_mihalcea vladmihalcea.com
AUTO: IDENTITY vs TABLE?
• Prior to Hibernate 5, AUTO would resolve to IDENTITY if the
database supports this feature
• Hibernate 5 uses TABLE generator if the database does not support
sequences
• So, pay attention when using MySQL or MariaDB (prior to 10.3)
@vlad_mihalcea vladmihalcea.com
SEQUENCE vs TABLE (100 rows)
• Both benefiting from JDBC batch inserts
• Both using a pooled optimizer with an increment size of 100
@vlad_mihalcea vladmihalcea.com
SEQUENCE vs TABLE (100 rows)
1 2 4 8 16
0
200
400
600
800
1000
1200
Thread count
Time(ms)
Sequence Table
@vlad_mihalcea vladmihalcea.com
Agenda
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching
@vlad_mihalcea vladmihalcea.com
Relationships
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
@vlad_mihalcea vladmihalcea.com
Agenda
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching
@vlad_mihalcea vladmihalcea.com
Batching
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
• SessionFactory setting
• Session-level configuration since Hibernate 5.2
@vlad_mihalcea vladmihalcea.com
Batching - SessionFactory
<property
name="hibernate.jdbc.batch_size"
value="5"/>
• Switching from non-batching to batching
@vlad_mihalcea vladmihalcea.com
Batching - Session
doInJPA( this::entityManagerFactory, entityManager -> {
entityManager.unwrap( Session.class )
.setJdbcBatchSize( 10 );
for ( long i = 0; i < entityCount; ++i ) {
Person = new Person( i, String.format( "Person %d", i ) );
entityManager.persist( person );
if ( i % batchSize == 0 ) {
entityManager.flush();
entityManager.clear();
}
}
} );
@vlad_mihalcea vladmihalcea.com
Batching
DEBUG [main]: n.t.d.l.SLF4JQueryLoggingListener –
Name:DATA_SOURCE_PROXY,
Time:1,
Success:True,
Type:Prepared,
Batch:True,
QuerySize:1,
BatchSize:10,
Query: ["insert into Person (name, id) values (?, ?)"],
Params:[
(Person 1, 1), (Person 2, 2), (Person 3, 3), (Person 4, 4), (Person 5, 5),
(Person 6, 6), (Person 7, 7), (Person 8, 8), (Person 9, 9), (Person 10, 10)
]
@vlad_mihalcea vladmihalcea.com
Insert PreparedStatement batching (5k rows)
1 10 20 30 40 50 60 70 80 90 100 1000
0
200
400
600
800
1000
1200
1400
1600
Batch size
Time(ms)
DB_A DB_B DB_C DB_D
@vlad_mihalcea vladmihalcea.com
Update PreparedStatement batching (5k rows)
1 10 20 30 40 50 60 70 80 90 100 1000
0
100
200
300
400
500
600
700
Batch size
Time(ms)
DB_A DB_B DB_C DB_D
@vlad_mihalcea vladmihalcea.com
Delete PreparedStatement batching (5k rows)
1 10 20 30 40 50 60 70 80 90 100 1000
0
200
400
600
800
1000
1200
Batch size
Time(ms)
DB_A DB_B DB_C DB_D
@vlad_mihalcea vladmihalcea.com
Batching - Cascading
<property
name="hibernate.order_inserts"
value="true"/>
<property
name="hibernate.order_updates"
value="true"/>
@vlad_mihalcea vladmihalcea.com
Batching – @Version
<property
name="hibernate.jdbc.batch_versioned_data"
value="true"/>
• Enabled by default in Hibernate 5
• Disabled in Hibernate 3.x, 4.x, and for Oracle 8i, 9i, and 10g
dialects
@vlad_mihalcea vladmihalcea.com
Agenda
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching
@vlad_mihalcea vladmihalcea.com
Fetching
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
• JDBC fetch size
• JDBC ResultSet size
• DTO vs Entity queries
• Fetching relationships
@vlad_mihalcea vladmihalcea.com
Fetching – JDBC Fetch Size
• Oracle – Default fetch size is 10
• SQL Server – Adaptive buffering
• PostgreSQL, MySQL – Fetch the whole ResultSet at once
• SessionFactory setting:
<property
name="hibernate.jdbc.fetch_size"
value="100"/>
@vlad_mihalcea vladmihalcea.com
Fetching - JDBC fetch size
• Query-level hint:
List<PostCommentSummary> summaries =
entityManager.createQuery(
"select new PostCommentSummary( " +
" p.id, p.title, c.review ) " +
"from PostComment c " +
"join c.post p")
.setHint(QueryHints.HINT_FETCH_SIZE, fetchSize)
.getResultList();
@vlad_mihalcea vladmihalcea.com
Fetching – JDBC Fetch Size (10k rows)
1 10 100 1000 10000
0
100
200
300
400
500
600
Fetch size
Time(ms)
DB_A DB_B DB_C DB_D
@vlad_mihalcea vladmihalcea.com
Fetching – Pagination
• JPA / Hibernate API works for both entity and native queries
List<PostCommentSummary> summaries =
entityManager.createQuery(
"select new PostCommentSummary( " +
" p.id, p.title, c.review ) " +
"from PostComment c " +
"join c.post p")
.setFirstResult(pageStart)
.setMaxResults(pageSize)
.getResultList();
@vlad_mihalcea vladmihalcea.com
Fetching – 100k vs 100 rows
Fetch all Fetch limit
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
Time(ms)
DB_A DB_B DB_C DB_D
@vlad_mihalcea vladmihalcea.com
Fetching – Pagination
• Hibernate uses OFFSET pagination
• Keyset pagination scales better when navigating large result sets
• http://use-the-index-luke.com/no-offset
@vlad_mihalcea vladmihalcea.com
Fetching – Entity vs Projection
• Selecting all columns vs a custom projection
SELECT *
FROM post_comment pc
INNER JOIN post p ON p.id = pc.post_id
INNER JOIN post_details pd ON p.id = pd.id
SELECT pc.version
FROM post_comment pc
INNER JOIN post p ON p.id = pc.post_id
INNER JOIN post_details pd ON p.id = pd.id
@vlad_mihalcea vladmihalcea.com
Fetching – Entity vs Projection
All columns Custom projection
0
5
10
15
20
25
30
Time(ms)
DB_A DB_B DB_C DB_D
@vlad_mihalcea vladmihalcea.com
Fetching – DTO Projections
• Read-only views
• Tree structures (Recursive CTE)
• Paginated Tables
• Analytics (Window functions)
@vlad_mihalcea vladmihalcea.com
Fetching – Entity Queries
• Writing data
• Web flows / Multi-request logical transactions
• Application-level repeatable reads
• Detached entities / PersistenceContextType.EXTENDED
• Optimistic concurrency control (e.g. version, dirty properties)
@vlad_mihalcea vladmihalcea.com
Fetching – Relationships
Association FetchType
@ManyToOne EAGER
@OneToOne EAGER
@OneToMany LAZY
@ManyToMany LAZY
• LAZY associations can be fetched eagerly
• EAGER associations cannot be fetched lazily
@vlad_mihalcea vladmihalcea.com
Fetching – Best Practices
• Default to FetchType.LAZY
• Fetch directive in JPQL/Criteria API queries
• Entity graphs / @FetchProfile
• LazyInitializationException
@vlad_mihalcea vladmihalcea.com
Fetching – Open Session in View Anti-Pattern
@vlad_mihalcea vladmihalcea.com
Fetching – Temporary Session Anti-Pattern
• “Band aid” for LazyInitializationException
• One temporary Session/Connection for every lazily fetched
association
<property
name="hibernate.enable_lazy_load_no_trans"
value="true"/>
@vlad_mihalcea vladmihalcea.com
Agenda
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching
@vlad_mihalcea vladmihalcea.com
Caching
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
@vlad_mihalcea vladmihalcea.com
Caching – Why 2nd - Level Caching
@vlad_mihalcea vladmihalcea.com
Caching – Why 2nd - Level Caching
“There are only two hard things in Computer
Science: cache invalidation and naming things.”
Phil Karlton
@vlad_mihalcea vladmihalcea.com
Caching – Strategies
Strategy Cache type Particularity
READ_ONLY READ-THROUGH Immutable
NONSTRICT_READ_WRITE READ-THROUGH Invalidation/
Inconsistency risk
READ_WRITE WRITE-THROUGH Soft Locks
TRANSACTIONAL WRITE-THROUGH JTA
@vlad_mihalcea vladmihalcea.com
Caching – Collection Cache
• It complement entity caching
• It stores only entity identifiers
• Read-Through
• Invalidation-based (Consistency over Performance)
@vlad_mihalcea vladmihalcea.com
Caching – Aggregates
@vlad_mihalcea vladmihalcea.com
Questions and Answers
𝑇 = 𝑡 𝑎𝑐𝑞 + 𝑡 𝑟𝑒𝑞 + 𝑡 𝑒𝑥𝑒𝑐 + 𝑡 𝑟𝑒𝑠 + 𝑡𝑖𝑑𝑙𝑒
• Performance and Response Time
• Connection providers
• Identifier generators
• Relationships
• Batching
• Fetching
• Caching

More Related Content

What's hot (20)

PDF
Groovy concurrency
Alex Miller
 
PDF
MariaDB Optimizer
JongJin Lee
 
PDF
Building better Node.js applications on MariaDB
MariaDB plc
 
PDF
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Jaime Crespo
 
PDF
What is new in PostgreSQL 14?
Mydbops
 
PDF
Introduction to Mongodb execution plan and optimizer
Mydbops
 
PDF
Connect 2016-Move Your XPages Applications to the Fast Lane
Howard Greenberg
 
PDF
Tips and Tricks For Faster Asp.NET and MVC Applications
Sarvesh Kushwaha
 
PDF
20151010 my sq-landjavav2a
Ivan Ma
 
PDF
Asynchronous web apps with the Play Framework 2.0
Oscar Renalias
 
PDF
Mysql server query path
Wenjie Wu
 
PDF
Parallel Query in AWS Aurora MySQL
Mydbops
 
PDF
MySQL 5.7 + JSON
Morgan Tocker
 
PDF
Short intro to scala and the play framework
Felipe
 
PPTX
Play + scala + reactive mongo
Max Kremer
 
PDF
COScheduler
WO Community
 
PDF
Go faster with_native_compilation Part-2
Rajeev Rastogi (KRR)
 
PPTX
10 performance and scalability secrets of ASP.NET websites
oazabir
 
PDF
MySQL Performance Schema in 20 Minutes
Sveta Smirnova
 
PDF
Spring Batch in Code - simple DB to DB batch applicaiton
tomi vanek
 
Groovy concurrency
Alex Miller
 
MariaDB Optimizer
JongJin Lee
 
Building better Node.js applications on MariaDB
MariaDB plc
 
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Jaime Crespo
 
What is new in PostgreSQL 14?
Mydbops
 
Introduction to Mongodb execution plan and optimizer
Mydbops
 
Connect 2016-Move Your XPages Applications to the Fast Lane
Howard Greenberg
 
Tips and Tricks For Faster Asp.NET and MVC Applications
Sarvesh Kushwaha
 
20151010 my sq-landjavav2a
Ivan Ma
 
Asynchronous web apps with the Play Framework 2.0
Oscar Renalias
 
Mysql server query path
Wenjie Wu
 
Parallel Query in AWS Aurora MySQL
Mydbops
 
MySQL 5.7 + JSON
Morgan Tocker
 
Short intro to scala and the play framework
Felipe
 
Play + scala + reactive mongo
Max Kremer
 
COScheduler
WO Community
 
Go faster with_native_compilation Part-2
Rajeev Rastogi (KRR)
 
10 performance and scalability secrets of ASP.NET websites
oazabir
 
MySQL Performance Schema in 20 Minutes
Sveta Smirnova
 
Spring Batch in Code - simple DB to DB batch applicaiton
tomi vanek
 

Similar to High-Performance Hibernate - JDK.io 2018 (20)

PPT
Hibernate training-topics
Vibrant Technologies & Computers
 
PDF
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Marco Tusa
 
PDF
Accessing data through hibernate: what DBAs should tell to developers and vic...
Marco Tusa
 
PPTX
Performance eng prakash.sahu
Dr. Prakash Sahu
 
PPTX
FSE2016 - CacheOptimizer: Helping Developers Configure Caching Frameworks for...
Concordia University
 
PPT
Hibernate jj
Joe Jacob
 
PDF
MySQL Performance Metrics that Matter
Morgan Tocker
 
PDF
Hibernate performance tuning
Igor Dmitriev
 
ODP
Hibernate complete Training
sourabh aggarwal
 
PDF
Hibernate ORM: Tips, Tricks, and Performance Techniques
Brett Meyer
 
PPTX
Hibernate tutorial
Mumbai Academisc
 
PPTX
Hotsos 2012
Connor McDonald
 
PDF
Perconalive feb-2011-share
mdcallag
 
ODP
Hibernate Developer Reference
Muthuselvam RS
 
PDF
Hibernate
Prasadvarada V
 
PPT
Hibernate
Shaharyar khan
 
PPTX
Hibernate
Sujit Kumar
 
PPTX
Hibernate
Prashant Kalkar
 
Hibernate training-topics
Vibrant Technologies & Computers
 
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Marco Tusa
 
Accessing data through hibernate: what DBAs should tell to developers and vic...
Marco Tusa
 
Performance eng prakash.sahu
Dr. Prakash Sahu
 
FSE2016 - CacheOptimizer: Helping Developers Configure Caching Frameworks for...
Concordia University
 
Hibernate jj
Joe Jacob
 
MySQL Performance Metrics that Matter
Morgan Tocker
 
Hibernate performance tuning
Igor Dmitriev
 
Hibernate complete Training
sourabh aggarwal
 
Hibernate ORM: Tips, Tricks, and Performance Techniques
Brett Meyer
 
Hibernate tutorial
Mumbai Academisc
 
Hotsos 2012
Connor McDonald
 
Perconalive feb-2011-share
mdcallag
 
Hibernate Developer Reference
Muthuselvam RS
 
Hibernate
Prasadvarada V
 
Hibernate
Shaharyar khan
 
Hibernate
Sujit Kumar
 
Hibernate
Prashant Kalkar
 
Ad

Recently uploaded (20)

PPTX
Exploring Multilingual Embeddings for Italian Semantic Search: A Pretrained a...
Sease
 
PDF
Context Engineering for AI Agents, approaches, memories.pdf
Tamanna
 
PPTX
apidays Helsinki & North 2025 - Vero APIs - Experiences of API development in...
apidays
 
PDF
Avatar for apidays apidays PRO June 07, 2025 0 5 apidays Helsinki & North 2...
apidays
 
PPTX
apidays Helsinki & North 2025 - Agentic AI: A Friend or Foe?, Merja Kajava (A...
apidays
 
PDF
JavaScript - Good or Bad? Tips for Google Tag Manager
📊 Markus Baersch
 
PDF
The European Business Wallet: Why It Matters and How It Powers the EUDI Ecosy...
Lal Chandran
 
PDF
Building Production-Ready AI Agents with LangGraph.pdf
Tamanna
 
PDF
Driving Employee Engagement in a Hybrid World.pdf
Mia scott
 
PPTX
SlideEgg_501298-Agentic AI.pptx agentic ai
530BYManoj
 
PDF
Copia de Strategic Roadmap Infographics by Slidesgo.pptx (1).pdf
ssuserd4c6911
 
PPTX
Module-5-Measures-of-Central-Tendency-Grouped-Data-1.pptx
lacsonjhoma0407
 
PDF
Data Chunking Strategies for RAG in 2025.pdf
Tamanna
 
PPTX
apidays Munich 2025 - Building an AWS Serverless Application with Terraform, ...
apidays
 
PPT
tuberculosiship-2106031cyyfuftufufufivifviviv
AkshaiRam
 
PDF
OPPOTUS - Malaysias on Malaysia 1Q2025.pdf
Oppotus
 
PDF
apidays Helsinki & North 2025 - APIs in the healthcare sector: hospitals inte...
apidays
 
PPTX
apidays Helsinki & North 2025 - APIs at Scale: Designing for Alignment, Trust...
apidays
 
PPTX
Numbers of a nation: how we estimate population statistics | Accessible slides
Office for National Statistics
 
PDF
OOPs with Java_unit2.pdf. sarthak bookkk
Sarthak964187
 
Exploring Multilingual Embeddings for Italian Semantic Search: A Pretrained a...
Sease
 
Context Engineering for AI Agents, approaches, memories.pdf
Tamanna
 
apidays Helsinki & North 2025 - Vero APIs - Experiences of API development in...
apidays
 
Avatar for apidays apidays PRO June 07, 2025 0 5 apidays Helsinki & North 2...
apidays
 
apidays Helsinki & North 2025 - Agentic AI: A Friend or Foe?, Merja Kajava (A...
apidays
 
JavaScript - Good or Bad? Tips for Google Tag Manager
📊 Markus Baersch
 
The European Business Wallet: Why It Matters and How It Powers the EUDI Ecosy...
Lal Chandran
 
Building Production-Ready AI Agents with LangGraph.pdf
Tamanna
 
Driving Employee Engagement in a Hybrid World.pdf
Mia scott
 
SlideEgg_501298-Agentic AI.pptx agentic ai
530BYManoj
 
Copia de Strategic Roadmap Infographics by Slidesgo.pptx (1).pdf
ssuserd4c6911
 
Module-5-Measures-of-Central-Tendency-Grouped-Data-1.pptx
lacsonjhoma0407
 
Data Chunking Strategies for RAG in 2025.pdf
Tamanna
 
apidays Munich 2025 - Building an AWS Serverless Application with Terraform, ...
apidays
 
tuberculosiship-2106031cyyfuftufufufivifviviv
AkshaiRam
 
OPPOTUS - Malaysias on Malaysia 1Q2025.pdf
Oppotus
 
apidays Helsinki & North 2025 - APIs in the healthcare sector: hospitals inte...
apidays
 
apidays Helsinki & North 2025 - APIs at Scale: Designing for Alignment, Trust...
apidays
 
Numbers of a nation: how we estimate population statistics | Accessible slides
Office for National Statistics
 
OOPs with Java_unit2.pdf. sarthak bookkk
Sarthak964187
 
Ad

High-Performance Hibernate - JDK.io 2018