Hibernate ORM (or simply Hibernate) is an
object–relational mapping tool for the
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
programming language. It provides a
framework for mapping an
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
domain model to a
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
. Hibernate handles
object–relational impedance mismatch
Object–relational impedance mismatch is a set of difficulties going between data in relational data stores and data in domain-driven object models. Relational Database Management Systems (RDBMS) is the standard method for storing data in a ded ...
problems by replacing direct,
persistent database accesses with high-level object handling functions.
Hibernate is
free software
Free software, libre software, libreware sometimes known as freedom-respecting software is computer software distributed open-source license, under terms that allow users to run the software for any purpose as well as to study, change, distribut ...
that is distributed under the
Apache License
The Apache License is a permissive free software license written by the Apache Software Foundation (ASF). It allows users to use the software for any purpose, to distribute it, to modify it, and to distribute modified versions of the software ...
. Versions prior to 7.0.0.Beta4 were distributed under the
GNU Lesser General Public License
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
2.1.
Hibernate's primary feature is mapping from Java classes to
database tables, and mapping from Java data types to
SQL
Structured Query Language (SQL) (pronounced ''S-Q-L''; or alternatively as "sequel")
is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling s ...
data types. Hibernate also provides data query and retrieval facilities. It generates SQL calls and relieves the developer from the manual handling and object conversion of the result set.
Mapping
The mapping of Java classes to database tables is implemented by the configuration of an
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
file or by using
Java Annotations. When using an XML file, Hibernate can
generate skeleton
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
for the persistence classes. This is auxiliary when annotations are used. Hibernate can use the XML file or the Java annotations to maintain the
database schema
The database schema is the structure of a database described in a formal language supported typically by a relational database management system (RDBMS). The term "wikt:schema, schema" refers to the organization of data as a blueprint of how the ...
.
There are provided facilities to arrange
one-to-many and
many-to-many
Many-to-many communication occurs when information is shared between groups. Members of a group receive information from multiple senders.
Wikis are a type of many-to-many communication, where multiple editors collaborate to create content that is ...
relationships between classes. In addition to managing associations between objects, Hibernate can also manage
reflexive associations wherein an object has a one-to-many relationship with other instances of the
class
Class, Classes, or The Class may refer to:
Common uses not otherwise categorized
* Class (biology), a taxonomic rank
* Class (knowledge representation), a collection of individuals or objects
* Class (philosophy), an analytical concept used d ...
type
Type may refer to:
Science and technology Computing
* Typing, producing text via a keyboard, typewriter, etc.
* Data type, collection of values used for computations.
* File type
* TYPE (DOS command), a command to display contents of a file.
* ...
.
Hibernate supports the mapping of custom value types. This makes the following scenarios possible:
* Overriding the default SQL type when mapping a column to a property.
* Mapping Java
Enums to columns as though they were regular properties.
* Mapping a single property to multiple columns.
Definition:
Objects in an
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
application follow
OOP principles, while objects in the back-end follow
database normalization
Database normalization is the process of structuring a relational database in accordance with a series of so-called '' normal forms'' in order to reduce data redundancy and improve data integrity. It was first proposed by British computer scien ...
principles, resulting in different representation requirements. This problem is called "
object–relational impedance mismatch
Object–relational impedance mismatch is a set of difficulties going between data in relational data stores and data in domain-driven object models. Relational Database Management Systems (RDBMS) is the standard method for storing data in a ded ...
". Mapping is a way of resolving the object–relational impedance mismatch problem.
Mapping informs the ORM tool of what Java class object to store in which database table.
Hibernate Query Language (HQL)
Hibernate provides a
SQL
Structured Query Language (SQL) (pronounced ''S-Q-L''; or alternatively as "sequel")
is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling s ...
inspired language called Hibernate Query Language (HQL) for writing SQL-like queries against Hibernate's data objects. ''Criteria Queries'' are provided as an
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
alternative to HQL. Criteria Query is used to modify the objects and provide the restriction for the objects.
HQL (Hibernate Query Language) is the object-oriented version of SQL. It generates database independent queries so that there is no need to write database-specific queries. Without this capability, changing the database would require individual SQL queries to be changed as well, leading to maintenance issues.
Persistence
Hibernate provides transparent persistence for
Plain Old Java Object
In software engineering, a plain old Java object (POJO) is an ordinary Java object, not bound by any special restriction. The term was coined by Martin Fowler, Rebecca Parsons and Josh MacKenzie in September 2000:
The term "POJO" initially den ...
s (POJOs). The only strict requirement for a persistent class is a
no-argument constructor, though not necessarily . Proper behavior in some applications also requires special attention to the and methods in the classes. Hibernate recommends providing an identifier attribute, and this is planned to be a mandatory requirement in a future release.
Collections of data objects are typically stored in Java collection classes, such as implementations of the and interfaces.
Java generics, introduced in Java 5, are also supported. Hibernate can be configured to
lazy load associated collections. Lazy loading is the default as of Hibernate 3.
Related objects can be configured to ''
cascade
Cascade, or Cascading may refer to:
Science and technology Science
* Air shower (physics), a cascade (particle shower) of subatomic particles and ionized nuclei
** Particle shower, a cascade of secondary particles produced as the result of a high ...
'' operations from one object to the other. For example, a parent class object can be configured to cascade its and operations to its child class objects.
Integration
Hibernate can be used both in standalone
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
applications and in
Java EE
Jakarta EE, formerly Java Platform, Enterprise Edition (Java EE) and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web serv ...
applications using
servlets,
EJB session beans, and
JBI service components. It can also be included as a feature in other programming languages. For example,
Adobe
Adobe (from arabic: الطوب Attub ; ) is a building material made from earth and organic materials. is Spanish for mudbrick. In some English-speaking regions of Spanish heritage, such as the Southwestern United States, the term is use ...
integrated Hibernate into version 9 of
ColdFusion (which runs on J2EE app servers) with an abstraction layer of new functions and syntax added into
CFML
ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the Java virtual machine (JVM), the .NET framework, and Google App Engine. Several commercial and free and open-source software imp ...
.
Entities and components
In Hibernate
jargon
Jargon, or technical language, is the specialized terminology associated with a particular field or area of activity. Jargon is normally employed in a particular Context (language use), communicative context and may not be well understood outside ...
, an ''entity'' is a stand-alone object in Hibernate's
persistent mechanism which can be manipulated independently of other objects. In contrast, a ''component'' is subordinate to an entity and can be manipulated only with respect to that entity. For example, an Album object may represent an entity; but the Tracks object associated with the Album objects would represent a ''component'' of the Album entity, if it is assumed that Tracks can only be saved or retrieved from the database through the Album object. Unlike J2EE, Hibernate can switch databases.
History
Hibernate was started in 2001 by Gavin King with colleagues from Cirrus Technologies as an alternative to using EJB2-style entity beans. The original goal was to offer better persistence capabilities than those offered by EJB2; by simplifying the complexities and supplementing certain missing features.
In early 2003, the Hibernate development team began Hibernate2 releases, which offered many significant improvements over the first release.
JBoss, Inc. (now part of
Red Hat
Red Hat, Inc. (formerly Red Hat Software, Inc.) is an American software company that provides open source software products to enterprises and is a subsidiary of IBM. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North ...
) later hired the lead Hibernate developers in order to further its development.
In 2005, Hibernate version 3.0 was released. Key features included a new Interceptor/Callback architecture, user defined filters, and JDK 5.0
Annotations
An annotation is extra information associated with a particular point in a document or other piece of information. It can be a note that includes a comment or explanation. Annotations are sometimes presented in the margin of book pages. For anno ...
(Java's
metadata
Metadata (or metainformation) is "data that provides information about other data", but not the content of the data itself, such as the text of a message or the image itself. There are many distinct types of metadata, including:
* Descriptive ...
feature). , Hibernate 3 (version 3.5.0 and up) was a certified implementation of the
Java Persistence API 2.0 specification via a wrapper for the Core module which provides conformity with the JSR 317 standard.
In Dec 2011, Hibernate Core 4.0.0 Final was released. This includes new features such a
multi-tenancysupport, introduction of ServiceRegistry (a major change in how Hibernate builds and manages "services"), better session opening from SessionFactory, improved integration via ''org.hibernate.integrator.spi.Integrator'' and auto discovery,
internationalization
Internationalization or Internationalisation is the process of increasing involvement of enterprises in international markets, although there is no agreed definition of internationalization. Internationalization is a crucial strategy not only for ...
support, message codes in logging, and a more distinction between the API, SPI or implementation classes.
In December 2012, Hibernate ORM 4.1.9 Final was released.
In Mar 2013, Hibernate ORM 4.2 Final was released.
In December 2013, Hibernate ORM 4.3.0 Final was released. It features
Java Persistence API 2.1.
In September 2015, Hibernate ORM 5.0.2 Final was released. It has improved bootstrapping, hibernate-java8, hibernate-spatial, Karaf support.
In November 2018, Hibernate ORM 5.1.17 Final was released. This is the final release of the 5.1 series.
In October 2018, Hibernate ORM 5.3 Final was released. It featured
Java Persistence API 2.2 inheritance caching.
In December 2018, Hibernate ORM 5.4.0 Final was released.
In October 2022, Hibernate ORM 6.1.4 Final was released.
Application programming interface
The Hibernate API is provided in the
Java package
A Java package organizes Java classes into namespaces,
providing a unique namespace for each type it contains.
Classes in the same package can access each other's package-private and protected members.
In general, a package can contain the fo ...
.
org.hibernate.SessionFactory interface
The interface is the native equivalent version of the JPA's standard .
org.hibernate.Session interface
The interface represents a Hibernate session, i.e., the main point of the manipulation performed on the database entities. The latter activities include (among the other things) managing the persistence state (
transient,
persisted, detached) of the objects, fetching the persisted ones from the database and the management of the transaction demarcation.
A is intended to last as long as the logical transaction on the database. Due to the latter feature, implementations are not expected to be thread safe nor to be used by multiple clients.
Software components
The Hibernate software includes the following components:
* Hibernate ORM (known as Hibernate Core before release 4.1) – the base software for an object–relational mapping solution for Java environments
* Hibernate Annotations (merged into Hibernate Core/ORM since version 3.6) – metadata that governs the transformation of data between the object-oriented model and the relational database model according to the JSR 317
Java Persistence API
Jakarta Persistence, also known as JPA (abbreviated from the former name Java Persistence API) is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications.
Per ...
(JPA 2)
* Hibernate EntityManager (merged into Hibernate Core/ORM since version 5.2)– together with Hibernate Annotations, a wrapper that implements a JSR 317
Java Persistence API
Jakarta Persistence, also known as JPA (abbreviated from the former name Java Persistence API) is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications.
Per ...
(JPA 2) persistence solution
* Hibernate Envers – auditing and versioning of persistent classes
* Hibernate OGM (Object/Grid Mapper) – an extension to store data in a
NoSQL
NoSQL (originally meaning "Not only SQL" or "non-relational") refers to a type of database design that stores and retrieves data differently from the traditional table-based structure of relational databases. Unlike relational databases, which ...
store
* Hibernate Shards –
horizontal partitioning for multiple relational databases
** While Hibernate Shards is not compatible with 4.x releases of Hibernate Core, some of the Shards capability was integrated into Core in the 4.0 release
* Hibernate Search – integrates the full text library functionality from
Apache Lucene
Apache Lucene is a free and open-source search engine software library, originally written in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License. Lucene is widely used as a ...
in the Hibernate and JPA model
* Hibernate Tools – a set of tools implemented as a suite of
Eclipse
An eclipse is an astronomical event which occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ...
plugins and
Ant
Ants are Eusociality, eusocial insects of the Family (biology), family Formicidae and, along with the related wasps and bees, belong to the Taxonomy (biology), order Hymenoptera. Ants evolved from Vespoidea, vespoid wasp ancestors in the Cre ...
tasks included in
JBoss Developer Studio
* Hibernate Validator – the
reference implementation
In the software development process, a reference implementation (or, less frequently, sample implementation or model implementation) is a program that implements all requirements from a corresponding specification. The reference implementation ...
of JSR 303
Bean Validation
* Hibernate Metamodel Generator – an annotation processor that creates JSR 317
Java Persistence API
Jakarta Persistence, also known as JPA (abbreviated from the former name Java Persistence API) is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications.
Per ...
(JPA 2) static metamodel classes using the JSR 269
Pluggable Annotation Processing API
*
NHibernate – an object–relational mapping solution for the
.NET Framework
See also
*
List of JBoss software
*
List of object–relational mapping software
*
NHibernate
*
Serialization
In computing, serialization (or serialisation, also referred to as pickling in Python (programming language), Python) is the process of translating a data structure or object (computer science), object state into a format that can be stored (e. ...
*
Service Data Object
*
MySQL
MySQL () is an Open-source software, open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A rel ...
*
Apache Cassandra
Apache Cassandra is a free and open-source software, free and open-source database management system designed to handle large volumes of data across multiple Commodity computing, commodity servers. The system prioritizes availability and scalab ...
*
Spring Framework
*
MyBatis
References
Bibliography
*
*
*
*
*
*
*
*
*
*
External links
*
*
{{Authority control
Object–relational mapping
Java enterprise platform
Red Hat software
Persistence frameworks
Software using the GNU Lesser General Public License
Cross-platform free software