Introducing Hibernate
JPA and Hibernate 3
Choosing a Persistence Strategy
Objects vs. Relations
Lightweight Services vs. Heavyweight Containers
How Hibernate Works
Within an Application Server
Persisting Plain Old Java Objects (POJOs)
Introducing the Hibernate Persistence Service
Getting Started with Hibernate
Setting up the Environment
hibernate.properties
Basic Configuration and Persistence Objects
Hibernate Mappings
Mapping Properties
Configuring the SessionFactory
Maintaining the Session Factory
A First Hibernate Example
Performing a Query
What is a Session?
Returning Multiple Rows
Executing Updates
Insert and Delete Operations with Hibernate
Configuring Log4J within Hibernate
Eclipse and Hibernate Plug-ins
The Hibernate API
Basic Configuration
The SessionFactory
A Hibernate Session
The Session Interface
Hibernate Exceptions
The LifeCycle of a POJO
Transient, Persistent, and Detached Objects
Session State Methods
Session Persistence Methods
First-Level Caching
Saving Duplicate Objects
Merging Detached Objects
Reattaching vs. Merging Detached Objects
Checking the Cache and Evicting
Loading Objects
Get() versus Load()
Mapping Associations
Mapping Metadata
XML vs. Annotations
Java vs. XDoclet Annotations
Java Annotations
Hibernate Annotations Extensions
Cascading Operations
Composite Keys
Exercise – Using Composite Keys and Associations
HQL, Queries, and Basic Mapping
Using HQL
Basic Syntax
Ordering and Grouping
Named Parameters
Positional Parameters
More on Types
Composite Types
Enumerated Types
Maps, Sets, Lists, and Bags
IdBags
Associations
Directional Navigation
Foreign Key Associations
One-to-One Mappings
One-to-Many Mappings
Many-to-Many Mappings
Page Iterators
Advanced Configuration and Transactions
Advanced SessionFactory Configuration
User-Provided vs. Hibernate-Provided Connections
Connection Pooling Properties
Setting up Logging
Hibernate Transactions
Managing Flushes
Establishing Isolation
Locking Strategies
Optimistic vs. Pessimistic Concurrency Strategies
Managing Cached Data
First Level Caching
Second Level Caching
Managing Concurrency
Versioning
Automatic Versioning
Disconnecting and Reconnecting Sessions
Advanced Session Management and Mapping Techniques
Bidirectional Associations
Lazy Initialization
Joins in Hibernate
Mapping Class Inheritance
Inheritance Strategies
Subqueries
Subclasses and Inheritance
Controlling Outer Join Fetches
Mapping Components (Composition)
Mapping Collections
Session Propagation
Detached Objects in Conversations
Hibernate within a J2EE Business Service Architecture
Hibernate in the Web Application
Developing a J2EE Layered Architecture
Utilizing a Proxy/Business Service
Wrapping Hibernate Services
Implementing a Data Access Object Strategy
Appendix A - Additional Hibernate Utilities
Code generation tools
Mapping to Schema (hbm2ddl)
Schema to Mapping (MiddleGen)
Mapping to Java Objects (hbm2java)
Appendix B – SQL Basics