Hibernate: A Practical Guide
Master Hibernate, the powerful ORM framework, and build robust data-driven Java applications with this comprehensive guide.
...
Share
Introduction to ORM and Hibernate
Unit 1: ORM Fundamentals
Intro to ORM
Impedance Mismatch
Benefits of ORM
ORM Approaches
ORM Trade-offs
Unit 2: Hibernate Core Concepts
Hibernate Architecture
SessionFactory
Hibernate Session
Configuration File
Mapping Process
Unit 3: Hibernate vs. Other Technologies
Hibernate vs. JPA
Hibernate vs. MyBatis
Hibernate vs. JDBC
Spring Data JPA
Choosing the Right Tool
Unit 4: Setting Up Your Development Environment
Installing JDK
Configuring JAVA_HOME
IDE Installation
Hibernate Library
Project Setup
Hibernate Configuration
Unit 1: XML Configuration
Intro to XML Config
Creating cfg.xml File
DB Connection in XML
Mapping Files in XML
Hibernate Properties
Unit 2: Annotation-Based Configuration
Intro to Annotations
@Entity and @Table
@Id and @Column
@GeneratedValue
Combining XML & Annotations
Unit 3: Java-Based Configuration
Intro to Java Config
Config Class
@Bean Annotation
DB Connection in Java
Mapping Classes in Java
Unit 4: Database Connections and Connection Pools
Intro to Conn. Pools
HikariCP Config
c3p0 Configuration
DBCP Configuration
Monitor Connection Pool
Unit 5: Hibernate Properties and Logging
Dialect Settings
Essential Properties
Intro to Logging
SLF4J and Logback
Log4j Configuration
Mapping Java Classes to Database Tables
Unit 1: Basic Entity Mapping
Intro to ORM & Hibernate
Setting Up Your Project
Creating Your First Entity
Mapping Attributes
Testing Basic Mapping
Unit 2: Defining Primary Keys and Constraints
Defining Primary Keys
Auto-Increment Keys
Sequence Generators
UUID Generators
Column Constraints
Unit 3: One-to-One Relationships
Intro to One-to-One
@OneToOne Annotation
Shared Primary Key
Foreign Key Association
Testing One-to-One
Unit 4: One-to-Many and Many-to-One Relationships
Intro to One-to-Many
@OneToMany Annotation
@ManyToOne Annotation
Join Column
Testing Relationships
Unit 5: Many-to-Many Relationships
Intro to Many-to-Many
@ManyToMany Annotation
Creating Join Table
Bidirectional Mapping
Testing Relationships
Unit 6: Composite Keys and Custom Data Types
Intro to Composite Keys
@EmbeddedId Annotation
@IdClass Annotation
Custom Data Types
Using Custom Types
Performing CRUD Operations
Unit 1: Creating Data
Creating Entities
Persisting with save()
Persisting with persist()
Save() vs. Persist()
Handling Exceptions
Unit 2: Reading Data
Retrieving with get()
Retrieving with load()
Get() vs. Load()
Retrieving with find()
Eager vs. Lazy Loading
Unit 3: Updating Data
Updating with update()
Updating with merge()
Update() vs. Merge()
Optimistic Locking
Update Exceptions
Unit 4: Deleting Data
Deleting Entities
Cascading Deletes
Orphan Removal
Delete Exceptions
Data Integrity
Unit 5: Session and Transaction Management
Obtaining a Session
Begin Transaction
Commit and Rollback
Transaction Boundaries
Try-With-Resources
Hibernate Query Language (HQL)
Unit 1: Basic HQL Queries
Intro to HQL
FROM Clause
WHERE Clause Basics
HQL Parameters
Executing HQL Queries
Unit 2: Advanced HQL Queries
Inner Joins in HQL
Left Joins in HQL
Right Joins in HQL
Aggregations in HQL
Subqueries in HQL
Unit 3: HQL vs. SQL
HQL vs SQL: Overview
HQL & SQL Similarities
Translating SQL to HQL
HQL Limitations
When to Use HQL
Unit 4: Optimizing HQL Queries
Indexes in HQL
Caching Strategies
Lazy vs Eager Loading
Reducing Data Retrieved
Hibernate Profiler
Criteria API
Unit 1: Building Basic Criteria Queries
Criteria API Intro
Creating a Criteria Obj
Adding Restrictions
Using Comparison Ops
Like Operator and Exec
Unit 2: Advanced Criteria Queries
Performing Joins
Left and Right Joins
Aggregations Overview
Aggregation Functions
Subqueries
Unit 3: Combining Criteria API and HQL
HQL and Criteria Intro
HQL for Complex Queries
Criteria for Dyn Filters
Add Restrict to HQL
Hybrid Approach Benefits
Unit 4: Pagination and Sorting
Pagination Overview
Setting First Result
Setting Max Results
Sorting Results
Descend Order and Multi
Hibernate Caching
Unit 1: Levels of Caching
Caching Fundamentals
Hibernate Caching Intro
First-Level Cache
Second-Level Cache
Cache Scopes
Unit 2: Second-Level Cache Configuration
Choosing a Provider
Configuration Overview
XML Configuration
Annotations
Cache Regions
Unit 3: Using Ehcache
Ehcache Integration
Memory Store
Disk Store
Ehcache Regions
Monitoring Ehcache
Unit 4: Cache Concurrency and Invalidation
Concurrency Challenges
Optimistic Locking
Pessimistic Locking
Cache Invalidation
TTL and TTI
Transactions and Concurrency Control
Unit 1: Transaction Management
Transactions: The Basics
ACID Properties
Hibernate Session Tx
Tx Control Methods
Handling Tx Exceptions
Unit 2: Transaction Isolation Levels
Isolation Levels Intro
Read Uncommitted
Read Committed
Repeatable Read
Serializable
Unit 3: Optimistic Locking
Optimistic Locking
Version Attribute
@Version Annotation
StaleObjectException
Opt Locking: Pros/Cons
Unit 4: Pessimistic Locking
Pessimistic Locking
Session Lock() Method
Lock Modes
Concurrency Impact
Pessimistic Use Cases
Unit 5: Managing Concurrent Access
Concurrency Issues
Access Strategies
Tx and Locking
Minimizing Issues
Monitor and Tune
Associations and Relationships
Unit 1: One-to-One Relationships Revisited
O2O Mapping Review
Shared Primary Key O2O
Foreign Key O2O
O2O Cascade Operations
Troubleshooting O2O
Unit 2: One-to-Many and Many-to-One Relationships Revisited
O2M/M2O Mapping Review
Unidirectional O2M
Bidirectional O2M
O2M Cascade Operations
Collections in O2M
Unit 3: Many-to-Many Relationships Revisited
M2M Mapping Review
M2M w/o Extra Columns
M2M w/ Extra Columns
M2M Cascade Operations
Optimize M2M
Unit 4: Lazy Loading and Eager Loading
Lazy Loading Concepts
Eager Loading Concepts
Lazy Loading Config
Eager Loading Config
Lazy Pitfalls
Unit 5: Resolving the N+1 Problem
N+1 Problem Explained
Identify N+1 Problem
Solve N+1: JOIN FETCH
Solve N+1: Batch Fetching
Hibernate Profiler
Integrating Hibernate with Spring
Unit 1: Spring and Hibernate Integration
Why Spring & Hibernate?
Configuring SessionFactory
Session Lifecycle
Injecting the Session
DI with Hibernate
Unit 2: Spring Transaction Management
Trans. Management Overview
Configuring the Manager
@Transactional Annotation
Declarative Management
Exception Handling
Unit 3: Configuring Hibernate as a Spring Bean
Define SessionFactory Bean
Define Data Source
Hibernate Properties
DI of SessionFactory
Lifecycle Management
Unit 4: Building a Complete Application
App Architecture
Spring MVC Setup
Spring Data JPA
RESTful API
Deployment
Best Practices and Performance Optimization
Unit 1: Coding Best Practices
Coding Conventions
Clean Code Principles
Meaningful Names
Unit Testing Hibernate
Version Control Basics
Unit 2: Configuration Best Practices
Core Properties
Connection Pooling
Caching Strategies
Lazy vs Eager Loading
Query Optimization
Unit 3: Identifying Performance Bottlenecks
Hibernate Profiler
Database Monitoring
Execution Plans
Finding Slow Queries
N+1 Problem
Unit 4: Schema Generation and Reverse Engineering
Schema Generation
Reverse Engineering
hbm2ddl.auto
Benefits of Tools
Customization Tips
Unit 5: Monitoring and Tuning Performance
JMX Monitoring
Tuning Properties
DB Tuning
Pool Monitoring
Cache Monitoring
Advanced Hibernate Features
Unit 1: Hibernate Interceptors
Intro to Interceptors
Implementing Interceptors
Modifying Entity Data
Auditing Changes
Enforcing Security
Unit 2: Hibernate Listeners
Intro to Listeners
Implementing Listeners
Pre/Post Actions
Sending Notifications
Custom Business Logic
Unit 3: Custom Data Types and User-Defined Functions
Intro to Custom Types
Implementing Custom Type
Mapping Custom Type
Complex Data Storage
User-Defined Functions
Custom Calculations
Unit 4: Hibernate Spatial Extensions
Intro to Spatial Data
Configuring Spatial
Mapping Geo Data Types
Spatial Functions in HQL
Distance Queries
Hibernate and Jakarta Persistence API (JPA)
Unit 1: Hibernate as a JPA Provider
JPA and Hibernate
Benefits of JPA with Hib
Configuring Hibernate
JPA Entity Mapping
Persistence XML
Unit 2: JPA Annotations with Hibernate
Defining JPA Entities
One-to-One Mapping
One-to-Many Mapping
Many-to-One Mapping
Many-to-Many Mapping
Unit 3: EntityManager API
EntityManager Basics
CRUD Operations
JPQL Queries
Named Queries
Transactions
Unit 4: Migrating to JPA
Migration Overview
Annotation Replacement
API Transition
Config Update
Testing Migration
Emerging Trends
Unit 1: Reactive Programming with Hibernate
Intro to Reactive
Benefits with Hibernate
Reactive Extensions
Challenges Explored
Suitability
Unit 2: Hibernate and Cloud-Native Architectures
Cloud Deployment Issues
Integrate with Kubernetes
Serverless Hibernate
Scalability & Resilience
Cloud Impact on Perform
Unit 3: Hibernate in Microservices Environments
Microservice Challenges
Data Consistency
DDD with Hibernate
Data Isolation & Autonomy
Suitability Evaluation
Real-World Project Implementation
Unit 1: Project Planning and Design
Project Scope Definition
Database Schema Design
Data Type Selection
App Architecture Planning
Project Roadmap Creation
Unit 2: Implementing Data Access Layer
Entity Class Creation
CRUD with Session/Entity
HQL Queries
Criteria API Queries
Txn Management
Unit 3: Implementing Business Logic Layer
Define Business Rules
Impl Use Cases/Workflows
Integrate Data Access
Unit Testing Setup
Writing Unit Tests
Unit 4: Implementing User Interface
UI Framework Selection
UI Design Principles
Spring MVC Integration
JSF Integration
Vaadin Integration
Unit 5: Deployment and Testing
Deployment to Tomcat
DB Configuration
Integration Testing
UAT Testing
App Monitoring