Hibernate
Introduction to Hibernate
- Issues with Persistence layers and Object-Relational Mapping (ORM)
- Hibernate Overview and Benefits
- Hibernate architecture overview
- POJO (Plain Old Java Object) Based Mapping
Getting started with Hibernate quickly
- Overview of the Hibernate distribution
- Configuring Hibernate
- hibernate.cfg.xml file
- SessionFactory configuration
- Connection properties, Database dialect
- Configuration class, Session Interface
- "Hello World" Program for Hibernate
- Mapping a Class
- Persistent Entity Class, Hibernate Mapping
- File, Mapping the Entity Class
- Primary keys: Id property, Generated Id
- Hibernate Type System
- Working with sessions and Persistent Objects
- Logging - log4j Overview and configuration for Hibernate
Querying
- Inserting and Updating Entities
- HQL - Hibernate Query Language Overview
- The Query Interface
- Creating and working with queries
- Named Queries, Projection Queries, Aggregate Queries
The Persistence Lifecycle
- Transaction Overview and Transactions in Hibernate
- Hibernate Transaction API (in Managed and Non-managed Environments)
- The lifecycle of managed objects
- Persistent, transient, and detached objects
- The Persistence (Session) Context (Lifespan, Relation to Managed Objects,Propagation)
- Contextual Sessions
- Synchronization to the Database
- The Session as cache
Optimistic Locking / Versioning
- Detached Objects and Optimistic Locking
- Versioning overview and Using Versioning
- Locking Objects
Relationships
- Object Relationship Overview
- Mapping Collections of Value Objects
- Entity Relationships: 1-N, N-1, N-N, 1-1
- Mapping Entity Relationships
- Uni and Bi-directional Relationships
- The Relationship "inverse"
- Cascading Over Relationships
- Queries Across Relationships (Lazy and Eager)
Inheritance Mapping
- Entity Inheritance with Hibernate
- Table-per-class mapping
- Table per Subclass mapping
- Table per Concrete Class mapping
Additional Querying Capabilities
- Projection Queries, Aggregate queries
- Bulk updates and deletes
- Native SQL Queries
- Query Filters
The Criteria API
- Overview of the Criteria API
- Working Querying with the Criteria API
- Query by Example
Hibernate and Java Persistence / EJB 3
- Overview of Java Persistence / EJB 3
- Relationship between Java Persistence and Hibernate
- Overview of Annotations
- Mapping Entities with Hibernate Annotations
- The EntityManager, Persistence Context and Persistence Unit
- Working with Transactions - EntityTransaction, Managed, and Unmanaged Environments
- Inserts and Updates
- JPQL - Java Persistence Query Language
- Versioning
- Relationships
Advanced Topics
- Components and Multi-Table Mapping
- equals() and hashCode()
- Caching and Efficiency
- Design Considerations