Search This Blog

Monday, 1 May 2017

Hibernate Architecture Overview

Hibernate Architecture Overview

Hibernate, is an ORM solution, which sits between the Java application data access layer and the Relational Database. The Java application makes use of the Hibernate APIs to load, store, query, etc its domain data. Hibernate implements the Java Persistence API (JPA) specifications. 


SessionFactory (org.hibernate.SessionFactory)
SessionFactory  is a thread-safe representation of the mapping of the application domain model to a database. SessionFactory acts as a factory for org.hibernate.Session instances. The EntityManagerFactory is the JPA equivalent of a SessionFactory.

A SessionFactory is very expensive to create, so, for any given database, the application should have only one associated SessionFactory. The SessionFactory maintains services that Hibernate uses across all Sessions such as second level caches, connection pools, transaction system integrations, etc.

Session (org.hibernate.Session)
A single-threaded, short-lived object conceptually modeling a "Unit of Work". In JPA nomenclature, the Session is represented by an EntityManager.
The Hibernate Session wraps a JDBC java.sql.Connection and acts as a factory for org.hibernate.Transaction instances. 

Transaction (org.hibernate.Transaction)
A single-threaded, short-lived object used by the application to demarcate individual physical transaction boundaries.