Complete Hibernate and Java Persistence API


Duration Five Days


Duration: 5 Days


This course teaches students the Java specification for persisting objects to the database.  It does so through Hibernate – the most popular JPA implementation and object-relational mapping framework for Java environments.  Object relational mapping in large enterprise applications is difficult.  The task is so difficult that the problem of storing and retrieving objects to a relational database has its own name – impedance mismatch.

In this class, students learn object-relational mapping concepts and the various issues and options available in Java to address object persistence.  With these fundamentals, the course then explores the basics of JPA/Hibernate object persistence and configuration.  It also digs into the details of mapping, queries, transactions, and concurrency.

Not just a class that focuses on theory, this course is loaded with practical labs and deals with maintenance and performance issues.  After taking this class, developers will be able to build faster, more flexible and easier to maintain application persistence layers and overcome impedance mismatch with JPA implementations like the Hibernate framework.

Learning Objectives

  •  Understand the challenges of mapping objects to relational databases
  •  Learn the architecture of Hibernate and JPA
  •  Know how to setup and configure Hibernate and/or JPA for a Java project
  •  Learn to map Java classes and object associations to relational database tables with JPA and Hibernate annotations
  •  Learn to map Java classes and object associations to relational database tables with Hibernate or JPA XML mapping files
  •  Study strategies for mapping Java inheritance trees to relational database tables
  •  Learn the Hibernate Query Language, Java Persistence Query Language and Criteria for retrieving Java objects
  •  Explore how to manage database transactions
  •  Look at optimistic and pessimistic concurrency options provided by Hibernate and JPA


This class is designed for Java programmers with a need to understand the Java persistence provided by Hibernate or JPA framework and API.


Students should have a good understanding of the Java programming language.  A basic understanding of relational databases and SQL is very helpful.

Course Outline

Object Persistence

  •  Persistence
  •  Object Persistence
  •  Object/Relational Paradigms
  •  Impedance Mismatch
  •  Object Relational Mapping (ORM)
  •  Hibernate
  •  Why an ORM framework? Why Hibernate?
  •  Java Persistence API (JPA)
  •  Hibernate Projects
  •  Java ORM/Persistent Frameworks


  •  A Quick Hibernate Example
  •  Hibernate Architecture and API
  •  Hibernate Installation/Setup
  •  Configuration
  •  Configuration Properties
  •  Mapping Files


  •  A Quick JPA Example
  •  JPA Architecture and API
  •  Hibernate Installation/Setup with JPA
  •  Persistence Configuration
  •  Mapped Entities and Mapping Files

Entity Mapping by Annotation

  •  Persistent Classes
  •  POJOs
  •  JavaBeans
  •  Annotation Metadata
  •  Annotation Configuration
  •  Basic Entity Mapping via Annotations
  •  Basic Property Mapping via Annotation
  •  ID Mapping via Annotation
  •  Composite Keys (and Natural Keys)
  •  Access Type
  •  Hibernate Mapping Annotations

Entity Mapping by XML

  •  XML Metadata
  •  XML vs. Annotatin – Pros/Cons
  •  Hibernate XML Metadata Basics
  •  JPA XML Metadata Basics
  •  Basic Entity Mapping via XML
  •  Basic Property Mapping via XML
  •  Hibernate Types
  •  ID Mapping via XML
  •  Identifier Exposure
  •  Access Type

Persistence Context

  •  Entity Lifecycle
  •  New or Transient State
  •  Managed or Persistent State
  •  Entity Updates and Automatic Dirty Checking
  •  Flushing
  •  Detached State
  •  Detached State – Why?
  •  Remove/Delete
  •  Object Identifiers Revisited
  •  Detached & Merge Revisited
  •  Refresh

Embeddables and Components

  •  Domain Model
  •  Entities and Values
  •  Embeddables and Components
  •  Embeddable by Annotation
  •  JPA Embeddable by XML
  •  Hibernate Component by XML
  •  Component Bidirectional Association
  •  Issues and Warnings for Embeddables/Components
  •  Embeddable Composite Id
  •  Purpose of Embeddables/Components

Entity Associations

  •  Many-to-one
  •  Many-to-One by Annotation
  •  Many-to-One by XML mapping
  •  Bidirectional Many-to-One
  •  Bidirectional Many-to-One by Annotation
  •  Bidirectional Many-to-One by XML
  •  Other Collection Types
  •  Many-to-One List
  •  Many-to-One Bag
  •  Many-to-One Map

More Associations

  •  One-to-one
  •  One-to-one by Annotation
  •  One-to-one by XML
  •  Bidirectional One-to-One
  •  Bidirectional One-to-One by Annotation
  •  Bidirectional One-to-One by XML
  •  Many-to-many
  •  Many-to-many by Annotation
  •  Many-to-many by XML
  •  Bidirectional Many-to-Many
  •  Bidirectional Many-to-Many with Annotations
  •  Bidirectional Many-to-Many with XML

Value Type Collections

  •  Collections of Value Types
  •  Collections of Embeddables/Components


  •  Inheritance Mapping Strategies
  •  Table per Hierarchy
  •  Table per Subclass
  •  Table per Concrete Class
  •  Table per Concrete Class with Mapped Superclass
  •  Inheritance Mapping Pros/Cons
  •  Polymorphism
  •  Table per Concrete Class with Unions
  •  Choosing an Inheritance Strategy


  •  Cascading/Transitive Persistence
  •  Lazy Loading
  •  Proxies
  •  Eager Loading
  •  What’s a Proxy?
  •  Detached Objects and Proxies
  •  Polymorphic Associations Revisited


  •  Persistent Object Fetching Options
  •  Hibernate Query
  •  HQL
  •  HQL Parameters
  •  JPA Query and JPQL
  •  Named Queries
  •  Native SQL


  •  Criteria
  •  Criteria Select
  •  Criteria Inner/Outer Joins
  •  Criteria Parameters
  •  Criteria Where
  •  Criteria Order
  •  Metamodel
  •  Pagination and Query Hints
  •  Hibernate Scrolling
  •  Query Option Pros/Cons

Transactions and Concurrency

  •  The Java Transaction
  •  Hibernate Transaction Configuration
  •  Hibernate Transaction API
  •  JPA Transaction Configuration
  •  JPA Transaction API
  •  Optimistic Locking
  •  Versioning
  •  Hibernate Optimistic Locking without Versioning
  • Pessimistic Locking API