Hibernate

Hibernate

Hibernate ORM (Hibernate in short) is an object-relational mapping library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database. Hibernate solves object-relational impedance mismatch problems by replacing direct persistence-related database accesses with high-level object handling functions. Hibernate is a free software that is distributed under the GNU Lesser General Public License.

Hibernate's primary feature is mapping from Java classes to database tables (and from Java data types to SQL data types). Hibernate also provides data query and retrieval facilities. It generates SQL calls and relieves the developer from manual result set handling and object conversion. Applications using Hibernate are portable to supported SQL databases with little performance overhead.

1.Object Persistence
    •	Object/Relational Paradigms
    •	O/R Mismatch
    •	Object Relational Mapping (ORM)
    •	Java ORM/Persistent Frameworks

2.Hibernate Architecture 
    •	Overview of Hibernate Architecture and API
    •	Explain Hibernate Installation/Setup
    •	Configuration Process
    •	Configuration Properties
    •	Mapping Files

3.Persistent Classes
    •	POJOs
    •	JavaBeans
    •	Basic Mapping
    •	Class to Table Mappings
    •	Property Mapping
    •	Identifiers
    •	Generators
    •	Natural Keys
    •	Identifier Exposure
    •	Quoting SQL Tables and Columns

4.Working with Persistent Objects
    •	Overview of Entity Lifecycle
    •	Transient State & Persistent State
    •	Persistent Object Updates and Automatic Dirty Checking
    •	Detached State
    •	Deleted
    •	Object Identifiers Revisited
    •	Merge

5.Components
    •	Explain Domain Model
    •	Entities and Values
    •	List of Components

6.Associations
    •	Many-to-one
    •	Bidirectional Many-to-one
    •	Other Collections

7.Other Associations
    •	One-to-one
    •	Bidirectional One-to-one
    •	Many-to-many
    •	Bidirectional Many-to-many

8.Value Type Collections
    •	Value Types Collection
    •	Components Collection
    •	Sorting Collections

9.Inheritance
    •	Inheritance Mapping Strategies
    •	Table per concrete class
    •	Table per subclass
    •	Table per hierarchy
    •	Pros/Cons for Inheritance Mapping
    •	Explain Polymorphism
    •	Table per concrete class with unions
    •	Choosing an Inheritance Strategy

10.Transitive Persistence
    •	Lazy Loading
    •	Proxies
    •	Eager Loading
    •	What's a Proxy?
    •	Detached Objects and Proxies
    •	Polymorphic Associations Revisited

11.Custom Mapping
    •	Custom Mapping Types
    •	User Type
    •	Enumerations

12.HQL
    •	Hibernate Object Fetching Options
    •	Hibernate Query
    •	HQL Parameters
    •	Named Queries
    •	Native SQL

13.Criteria
    •	Restrictions
    •	Query By Example
    •	Scrolling
    •	Query Hints
    •	Query Option Pros/Cons

14.Transactions and Concurrenc
    •	The Java Transaction
    •	Hibernate Transaction Configuration
    •	Hibernate Transaction API
    •	Concurrency
    •	Isolation Levels
    •	Optimistic Locking
    •	Versioning
    •	Pessimistic Locking

15.Fetching Strategies
    •	N+1 Selects
    •	Join Fetching
    •	Subselect Fetching
    •	Batch Fetching
    •	Queries and Fetching Strategies
    •	Cartesian product Problem

16.Cache
    •	Hibernate Caching Architecture
    •	First Level Cache
    •	Second Level Cache
    •	Cache Concurrency
    •	Configuring Second Level Cache

17.Annotations
    •	Metadata
    •	Annotations Pros/Cons
    •	Configuring Hibernate Annotations
    •	EJB3/JPA Annotations
    •	Hibernate Annotations