The Best Way to Fetch Data with Java Persistence and Hibernate

Get the most out of your data access layer

   Watch Promo

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 watching this video course, you'll know all sorts of tips that you can readily apply to your current enterprise project.


  • Statement fetching for Oracle, SQL Server, PostgreSQL and MySQL
  • SQL pagination
  • DTO vs entity queries
  • The best way to fetch hierarchical data
  • How and when to fetch JPA entities
  • Fetching by natural id
  • Association fetching best practices
  • EAGER vs. LAZY fetching
  • The best way to solve the LazyInitializationException
  • How to fix the N+1 query issue
  • The best way to fetch multiple JPA collections
  • Why you should avoid the Open-Session in View Anti-Pattern
  • JPA 2.2 Stream support
  • How to provision the Hibernate query plan cache for best performance

Created By

Vlad Mihalcea
Vlad Mihalcea

Vlad Mihalcea is a Java Champion and one of the top Hibernate ORM project committers. He created the Hypersistence Optimizer tool, which scans your application configuration and mappings and tells you what changes you need to make to speed up your data access layer.

He's been answering thousands of questions about Hibernate and JPA on StackOverflow for which he's got gold badges for Hibernate, Java, and JPA tags.

Whenever he finds something interesting, he likes to share it on his personal blog. He believes in Open Source Software, and he thinks every developer should get involved, one way or the other.

If he doesn't find a suitable tool for a job, he takes the initiative and starts a new open source project, like Hibernate Types or FlexyPool.

Course Curriculum

Available in days
days after you enroll

Frequently Asked Questions

When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.
How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.

Great workshop!

Vlad guides you from basics to very complex topics with ease. He explains everything in a very detailed way and does his best to answer all your questions.

- Giseth Johana Grimaldo, Software Developer - Universidad Tecnológica de Pereira