Master Hibernate and JPA with Spring Boot in 100 Steps

Learn fundamentals of Java Persistence API (JPA) and Hibernate framework using Spring and Spring Boot

The Java Persistence API provides Java developers with an api for mapping java objects to relational data. In this course, you will learn about the JPA API, JPQL (Java Persistence query language), Java Persistence Criteria API and how you can perform ORM (Object Relational Mapping) with JPA.

Hibernate is the most popular implementation of JPA. It was the most popular ORM framework option before JPA emerged and it provides additional features on top of JPA. We will use Hibernate as the JPA implementation in this course.

During this course

  • You will learn the basics of JPA and Hibernate - Entities, Relationships, Inheritance Mappings and Annotations
  • You will understand approaches to querying data using JPA and Hibernate - JPQL, Criteria API and Native Queries
  • You will understand JPA and Hibernate Relationships in depth - One to One, Many to One and Many to Many
  • You will use a variety of Spring Boot Starters - Spring Boot Starter Web, Starter Data Jpa, Starter Test
  • You will learn the basic of performance tuning your JPA application with Hibernate - Solve N+1 Queries Issue.
  • You will learn the basics of caching - First Level Cache and Second Level Cache with EhCache
  • You will understand the basics of Spring Data JPA and Spring Data REST

Below are the step by step details of the important sections of the course:

Journey from JDBC To JPA

  1. Step01 - Setting up a project with JDBC, JPA, H2 and Web Dependencies
  2. Step02 - Launching up H2 Console
  3. Step03 - Creating a Database Table in H2
  4. Step04 - Populate data into Person Table
  5. Step05 - Implement findAll persons Spring JDBC Query Method
  6. Step06 - Execute the findAll method using CommandLineRunner
  7. Step07 - A Quick Review - JDBC vs Spring JDBC
  8. Step08 - Whats in the background? Understanding Spring Boot Autoconfiguration
  9. Step09 - Implementing findById Spring JDBC Query Method
  10. Step10 - Implementing deleteById Spring JDBC Update Method
  11. Step11 - Implementing insert and update Spring JDBC Update Methods
  12. Step12 - Creating a custom Spring JDBC RowMapper
  13. Step13 - Quick introduction to JPA
  14. Step14 - Defining Person Entity
  15. Step15 - Implementing findById JPA Repository Method
  16. Step16 - Implementing insert and update JPA Repository Methods
  17. Step17 - Implementing deleteById JPA Repository Method
  18. Step18 - Implementing findAll using JPQL Named Query

JPA/Hibernate in Depth

  1. Step01 - Create a JPA Project with H2 and Spring Boot
  2. Step02 - Create JPA Entity Course
  3. Step03 - Create findById using JPA Entity Manager
  4. Step04 - Configuring to enable H2 console and additional logging
  5. Step05 - Writing Unit Test for findById method
  6. Step06 - Writing a deleteByID method to delete an Entity
  7. Step07 - Writing Unit Test for deleteById method
  8. Step08 - Writing a save method to update and insert an Entity
  9. Step09 - Writing Unit Test for save method
  10. Step10 - Quick Review and Debugging Tips
  11. Step11 - Playing with Entity Manager
  12. Step12 - Entity Manager Methods - clear and detach
  13. Step13 - Entity Manager Methods - refresh
  14. Step14 - A Quick Review of Entity Manager
  15. Step15 - JPQL - Basics
  16. Step16 - JPA and Hibernate Annotations - @Table
  17. Step17 - JPA and Hibernate Annotations - @Column
  18. Step18 - JPA and Hibernate Annotations - @UpdateTimestamp and @CreationTimestamp
  19. Step19 - JPA and Hibernate Annotations - @NamedQuery and @NamedQueries
  20. Step20 - Native Queries - Basics
  21. Step21 - Entities and Relationships - An overview
  22. Step22 - Defining Entities - Student, Passport and Review
  23. Step23 - Introduction to One to One Relationship
  24. Step24 - OneToOne Mapping - Insert Student with Passport
  25. Step25 - OneToOne Mapping - Retrieving Student with Passport and Eager Fetch
  26. Step26 - OneToOne Mapping - Lazy Fetch
  27. Step27 - Session vs Transaction
  28. Step28 - OneToOne Mapping - Bidirectional Relationship - Part 1
  29. Step29 - OneToOne Mapping - Bidirectional Relationship - Part 2
  30. Step30 - ManyToOne Mapping - Designing the database
  31. Step31 - ManyToOne Mapping - Retrieving and inserting Reviews for Course
  32. Step32 - ManyToOne Mapping - Generalizing Insert Reviews
  33. Step33 - ManyToOne Mapping - Wrapping up
  34. Step34 - ManyToMany Mapping - Table Design
  35. Step35 - ManyToMany Mapping - Adding Annotations on Entities
  36. Step36 - ManyToMany Mapping - Fixing two join tables problem
  37. Step37 - ManyToMany Mapping - Customizing the Join Table
  38. Step38 - ManyToMany Mapping - Insert Data and Write Join Query
  39. Step39 - ManyToMany Mapping - Retrieve Data using JPA Relationships
  40. Step40 - ManyToMany Mapping - Insert Student and Course
  41. Step41 - Relationships between JPA Entities - A summary
  42. Step42 - Introduction to Inheritance Hierarchies and Mappings
  43. Step43 - JPA Inheritance Hierarchies and Mappings - Setting up entities
  44. Step44 - JPA Inheritance Hierarchies and Mappings - Setting up a Repository
  45. Step45 - JPA Inheritance Hierarchies and Mappings - Single Table
  46. Step46 - JPA Inheritance Hierarchies and Mappings - Table Per Class
  47. Step47 - JPA Inheritance Hierarchies and Mappings - Joined
  48. Step48 - JPA Inheritance Hierarchies and Mappings - Mapped Super Class
  49. Step49 - JPA Inheritance Hierarchies and Mappings - How to Choose?
  50. Step50 - JPQL - Courses without Students
  51. Step51 - JPQL - Courses with atleast 2 Students and order by
  52. Step52 - JPQL - Courses like 100 Steps
  53. Step53 - JPQL - Using Joins
  54. Step54 - Criteria Query - Retrieving all courses
  55. Step55 - Criteria Query - Courses like 100 Steps
  56. Step56 - Criteria Query - Courses without Students
  57. Step57 - Criteria Query - Using Joins
  58. Step58 - Introduction to Transaction Management
  59. Step59 - Transaction Management - ACID Properties
  60. Step60 - Understanding Dirty, Phanthom and Non Repeatable Reads
  61. Step61 - Understand 4 Isolation Levels
  62. Step62 - Choosing between Isolation Levels
  63. Step63 - Implementing Transaction Management - 3 Things to Decide
  64. Step64 - Introduction to Spring Data JPA
  65. Step65 - Testing the Spring Data JPA Repository with findById.
  66. Step66 - Spring Data JPA Repository - CRUD Methosd
  67. Step67 - Sorting using Spring Data JPA Repository
  68. Step68 - Pagination using Spring Data JPA Repository
  69. Step69 - Custom Queries using Spring Data JPA Repository
  70. Step70 - Spring Data REST
  71. Step71 - Introduction to Caching
  72. Step72 - Hibernate and JPA Caching - First Level Cache
  73. Step73 - Hibernate and JPA Caching - Basics of Second Level Cache with EhCache
  74. Step74 - Hibernate and JPA Caching - Second Level Cache Part 2
  75. Step75 - Hibernate Tips - Hibernate Soft Deletes - @SQLDelete and @Where
  76. Step76 - Hibernate Soft Deletes - Part 2
  77. Step77 - JPA Entity Life Cycle Methods
  78. Step78 - Using Embedded and Embeddable with JPA
  79. Step79 - Using Enums with JPA
  80. Step80 - JPA Tip - Be cautious with toString method implementations
  81. Step81 - JPA Tip - When do you use JPA?
  82. Step82 - Performance Tuning - Measure before Tuning
  83. Step83 - Performance Tuning - Indexes
  84. Step84 - Performance Tuning - Use Appropriate Caching
  85. Step85 - Performance Tuning - Eager vs Lazy Fetch
  86. Step86 - Performance Tuning - Avoid N+1 Problems

Hibernate Tips & Tricks

  • When does Hibernate send updates to the database?
  • When do we need @Transactional in an Unit Test?
  • Do read only methods need a transaction?
  • Why do we use @DirtiesContext in an Unit Test?
  • How to connect to a different database with Spring Boot?
  • How do you approach designing great applications with JPA?
  • Good Practices for developing JPA Applications
Who is the target audience?
  • You want to learn the basics of JPA and Hibernate
  • You want to understand how to build data layer of a web application


  • You should have working knowledge of Java and Annotations.
  • We will help you install Eclipse and get up and running with all frameworks, Maven and Embedded Tomcat.

Your Instructor


in28Minutes is the world's leading course provider for Spring Framework with more than 100,000 students pursuing our courses on in28Minutes Platform(, Udemy and YouTube.

Brain child of Ranga Karanam, an Architect with 15 Years of Java programming and design with major banking clients across the world, we started in28Minutes with the aim to create Hands-on Courses with Real World Projects.

We use 80-20 Rule. We discuss 20% things used 80% of time in depth. We touch upon other things briefly equipping you with enough knowledge to find out more on your own.

We love open source and therefore, All our code is open source too and available on Github.

Course Curriculum

  JPA and Hibernate in Depth
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.

This course is closed for enrollment.