High-Performance Java Persistence - Bouvet Norge

High-Performance Java Persistence

The High-Performance Java Persistence training is aimed to level up your data access skills, covering JDBC, Hibernate, and many database essential topics for Oracle, SQL Server, MySQL or PostgreSQL.

Varighet: 3 dager, fra kl 09:00- 17:00

Pris: 18200

Kurskategori: Utvikling for web og mobil

Want to run your data access layer at high speeds?

Do you know how a relational database systems works behind the scenes?

Do you know how the JDBC Driver executes statements and how you can configure it to boost application performance?

Adding JPA and Hibernate annotations is fairly easy. But, do you know the performance implications of each JPA or Hibernate feature your application makes heavy use of?

Course goals

This course is meant to mind the gap between Java developers and database programming. Most often, Java developers are very skilled when it comes to programming languages, design patterns, frameworks and everything that's related to their programming language of choice.

However, the database is still uncharted territory, usually treated as a black box that we throw queries at and expect it to respond in no time.

With this workshop, I want to get Java developers to know more about RDBMS so that they can design their application data access layer accordingly. After attending this workshop, you'll know all sorts of tips that you can readily apply to your current enterprise project.

Taget audience

This workshop is for any Java developer that happens to develop software that interacts with a relational database system.

Although we are going to cover many aspects related to database systems, JDBC, JPA and Hibernate, it is best if the attendees have at least one or two years experience working with these technologies since the information provided by this training is much easier to be assimilated by middle and senior developers.


It is recommended to bring your own notebook so that you can configure and run tests associated with the material we are going to go through this training. It is expected that attendees are familiar with Java, Maven, IDE systems like IntelliJ IDEA or Eclipse, as well as database systems like MySQL, PostgreSQL or in-memory databases like HSQLDB.

The attendees can set up the test environment we are going to use during the training by following the instructions provided in this GitHub repository.

Video Recording Included:

By attending this training, you will also get access to the High-Performance Java Persistence online edition, with 50 downloadable video episodes - 10 hours and 50 minutes of awsomeness. This will help you remember all the performance tuning tips you are going to learn during the live workshop



Day 1.

  • Introduction
  • Types and Identifiers

  • Connection Management

  • Relationships

Day 2.

  • Inheritance

  • Batching and Statement Caching

  • Persistence Context

  • Fetching

Day 3. 

  • Transactions and Concurrency Control

  • Database, Application and Hibernate Caching


Mastering the underlying data access framework is of paramount importance when it comes to designing a high-performance application. However, sometimes, the best way to address a data-intensive task is to write the proper SQL query. SQL has changed tremendously over the years, yet many Java developers lag behind when it comes to advanced SQL query capabilities. By taking this SQL Master Class for Java Developers course, you will learn very useful SQL features such as Lateral Join, Cross Apply, Window Functions, CTE, Recursive queries, Pivot, JSON, and even more.  The course covers Oracle, SQL Server, PostgreSQL, and MySQL,
so, not only it's going to help you with your current project, but it will be useful for future projects as well.



• O/R Mismatch
• JPA vs. Hibernate
• Logging SQL Statements
• Schema Management
• Integration Testing with Docker

Types and Identifiers

• JPA and Hibernate Types
• Custom Hibernate Types
• The hibernate-types project
• JPA and Hibernate Identifiers
• Hibernate Identifier Optimizers (e.g. hilo, pooled, pooled-lo)

Connection Management

• Connection Management and Hibernate Connection Providers
• Hibernate Connection Lifecycle
• Connection Monitoring
• Hibernate Statistics


• JPA and Hibernate Relationships
• Equals and Hashcode
• ManyToOne
• OneToMany
• OneToOne
• ManyToMany


• JPA Inheritance Basics
• Single Table Inheritance
• Discriminator Column
• Joined Inheritance
• TablePerClass Inheritance

Batching and Statement Caching

• Statement Lifecycle and Execution Plans
• Statement Caching
• Statement Batching and Cascade Operations
• Batching Update Operations
• SQL Injection

Persistence Context

• Persistence Context and Flushing Basics
• Action Queue
• The AUTO FlushModeType
• Dirty Checking Mechanism
• Bytecode Enhancement Dirty Checking


• Direct and Natural id fetching
• DTO projections vs Entity queries
• Query-time fetching
• Pagination queries

Transactions and Concurrency Control

• Phenomena
• Dirty Write,
• Dirty Read,
• Non-Repeatable Read,
• Phantom Read,
• Read Skew,
• Write Skew,
• Lost Updates
• 2PL (Two-Phase Locking)
• MVCC (Multi-Version Concurrency Control)
• Isolation levels and database concurrency control
• Logical vs. physical clock optimistic locking:
• Versionless optimistic locking
• JPA physical and optimistic lock types
• Skip locked and queuing access
• Preventing lost updates in long conversations

Database, Application and Hibernate Caching

• Database caching
• Application-level caching
• Second-level caching
• Cache synchronization strategies
• Cache concurrency strategies
• Collection Cache
• Query Cache


Vlad Mihalcea is a Java Champion, one of the top Hibernate ORM project committers, passionate about concurrency challenges, high-performance enterprise solutions, and online transaction processing. Vlad wrote the High-Performance Java Persistence book which became one of the best-selling Java books on Amazon. Vlad regularly speaks at Java conferences all over the world.

He is passionate about enterprise systems, data access frameworks, and distributed systems. He wrote hundreds of articles about Hibernate on his blog , and he has a gold badge for the Hibernate, Java, and JPA tags on StackOverflow. He believes in Open Source Software, and he thinks every developer should get involved, one way or the other.

Ønsker du å samle flere ansatte til et bedriftsinternt kurs?

Finner du ikke det helt optimale kurset eller kombinasjonen av kurs? Da ordner vi det - sammen. Vi kan tilrettelegge kurs slik at de inneholder akkurat det dere har behov for. Vi kan sette opp et helt nytt kurs, eller tilpasse eksisterende kurs og materiell. Flere medarbeidere kan selvfølgelig også samles til et eget felles kurs, for maksimal effektivitet. Ta kontakt med meg for et forslag til gjennomføring og et tilbud basert på deres behov.

Henrik Buzzi