Hibernate (framework)

From Wikipedia, the free encyclopedia
(Redirected from Hibernate (Java))

Template:Short description

Page Module:Infobox/styles.css has no content.

Hibernate ORM
[[Programmer|DeveloperTemplate:Pluralize from text]]Red Hat
Initial release23 May 2001;
25 years ago
 (2001-05-23)
Template:Infobox software/simple
Written inJava
EnginePage Template:Plainlist/styles.css has no content.Template:EditAtWikidata
Operating systemCross-platform (JVM)
PlatformJava Virtual Machine
TypeObject–relational mapping
LicenseApache License 2.0
Websitehibernate.org/orm/
RepositoryPage Template:Plainlist/styles.css has no content.

Script error: No such module "Check for conflicting parameters".

Hibernate ORM (or simply Hibernate) is an object–relational mappingLua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp tool for the Java programming language. It provides a framework for mapping an object-oriented domain model to a relational database. Hibernate handles object–relational impedance mismatch problems by replacing direct, persistent database accesses with high-level object handling functions.[2]

Hibernate is free software that is distributed under the Apache License. Versions prior to 7.0.0.Beta4 were distributed under the GNU Lesser General Public License 2.1.

Hibernate's primary feature is mapping from Java classes to database tables, and mapping 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 the manual handling and object conversion of the result set.

Standards

Hibernate ORM is a certified compatible implementation of the industry-standard Jakarta Persistence[3] (formerly Java Persistence API) and Jakarta Data[4][5] specifications.

Mapping

The mapping of Java classes to database tables is implemented by the configuration of an XML file or by using Java Annotations. When using an XML file, Hibernate can generate skeleton source code 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.

There are provided facilities to arrange one-to-many and many-to-many relationships between classes.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp 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 type.

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.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp
  • Mapping a single property to multiple columns.

Definition: Objects in an object-oriented application follow OOP principles, while objects in the back-end follow database normalization principles, resulting in different representation requirements. This problem is called "object–relational impedance mismatch". 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 inspired language called Hibernate Query Language[6] (HQL) for writing SQL-like queries against Hibernate's data objects. Criteria Queries are provided as an object-oriented alternative to HQL. Criteria Query is used to modify the objects and provide the restriction for the objects.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp 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 Objects (POJOs).Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp The only strict requirement for a persistent class is a no-argument constructor,Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp though not necessarily public. Proper behavior in some applications also requires special attention to the Template:Javadoc and Template:Javadoc methods in the Object classes.[7] Hibernate recommends providing an identifier attribute, and this is planned to be a mandatory requirement in a future release.[8]

Collections of data objects are typically stored in Java collection classes, such as implementations of the Template:Javadoc and Template:Javadoc interfaces. Java generics, introduced in Java 5, are also supported. Hibernate can be configured to lazy load associated collections.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp Lazy loading is the default as of Hibernate 3.

Related objects can be configured to cascade operations from one object to the other. For example, a parent Album class object can be configured to cascade its save and delete operations to its child Track class objects.

Integration

Hibernate can be used both in standalone Java applications and in Java EE 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 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.

Entities and components

In Hibernate jargon, an entity is a stand-alone object in Hibernate's persistent mechanism which can be manipulated independently of other objects.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp 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) 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 (Java's metadata feature). As of 2010, 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.[9]

In Dec 2011, Hibernate Core 4.0.0 Final was released. This includes new features such as multi-tenancy support, 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 support, message codes in logging, and a more distinction between the API, SPI or implementation classes.[10]

In December 2012, Hibernate ORM 4.1.9 Final was released.[11]

In Mar 2013, Hibernate ORM 4.2 Final was released.[12]

In December 2013, Hibernate ORM 4.3.0 Final was released.[13] 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.[14]

In March, 2022, Hibernate ORM 6.0.0 Final was released,[15] a "major redesign [which] has touched almost every subsystem of Hibernate, including the APIs, mapping annotations, and the query language".[16] The last of the 6.x series is version 6.6.x with 6.6.0.Final released in August 2024 and is in limited support in 2026.[17] The 6.6 series support Java 11, 17, 21 and 25 and is compatible with Jakarta Persistence 3.1 and Jakarta EE 10.[17]

In May 2025, Hibernate ORM 7.0.0 Final was released, with support for Jakarta Persistence 3.2 and Jakarta Data 1.0.[18] 7.1.0.Final was released in August 2025 and 7.2.0.Final in December 2025 both 7.1 and 7.2 series support Java 17, 21 and 25 and are compatible with Jakarta Persistence 3.2 and Jakarta EE 11.[19][20]

Application programming interface

The Hibernate API is provided in the Java package org.hibernate.[21]

org.hibernate.SessionFactory interface

The org.hibernate.SessionFactory interface is the native equivalent version of the JPA's standard EntityManagerFactory.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp

org.hibernate.Session interface

The org.hibernate.Session interface[22] 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[<span title="Script error: No such module "decodeEncode".">clarification needed]) of the objects, fetching the persisted ones from the database and the management of the transaction demarcation[<span title="Script error: No such module "decodeEncode".">clarification needed].

A Session is intended to last as long as the logical transaction on the database. Due to the latter feature, Session implementations are not expected to be thread safe nor to be used by multiple clients.

Software components

The Hibernate software includes the following components:[23]

  • Hibernate ORM (known as Hibernate Core before release 4.1[24]) – the base software for an object–relational mapping solution for Java environments[25]
  • Hibernate Annotations (merged into Hibernate Core/ORM since version 3.6[26]) – 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 (JPA 2)[27]
  • Hibernate EntityManager (merged into Hibernate Core/ORM since version 5.2[28])– together with Hibernate Annotations, a wrapper that implements a JSR 317 Java Persistence API (JPA 2) persistence solution[29]
  • Hibernate Envers – auditing and versioning of persistent classes[30]
  • Hibernate OGM (Object/Grid Mapper) – an extension to store data in a NoSQL store[31]
  • Hibernate Shards – horizontal partitioning for multiple relational databases[32]
    • 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 in the Hibernate and JPA model[33]
  • Hibernate Tools – a set of tools implemented as a suite of Eclipse plugins and Ant tasks included in JBoss Developer Studio[34]
  • Hibernate Validator – the reference implementation of JSR 303 Bean Validation[35]Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Template:Rp
  • Hibernate Processor – an annotation processor that creates Java Persistence static metamodel classes and Jakarta Data repository implementations using the JSR 269 Pluggable Annotation Processing API[36]
  • NHibernate – an object–relational mapping solution for the .NET Framework[37]

See also

Lua error in mw.title.lua at line 404: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

References

Page Template:Reflist/styles.css has no content.

  1. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate ORM - 7.0 series". Retrieved 27 May 2025.
  2. ^ Page Module:Citation/CS1/styles.css has no content."A Short Guide to Hibernate 7". docs.jboss.org.
  3. ^ Page Module:Citation/CS1/styles.css has no content."Jakarta Persistence 3.2". jakarta.ee.
  4. ^ Page Module:Citation/CS1/styles.css has no content."Jakarta Data 1.0". jakarta.ee.
  5. ^ Page Module:Citation/CS1/styles.css has no content."Introducing Hibernate Data Repositories". docs.jboss.org.
  6. ^ Page Module:Citation/CS1/styles.css has no content."A Guide to Hibernate Query Language". docs.jboss.org.
  7. ^ Page Module:Citation/CS1/styles.css has no content."Equals and HashCode". JBoss Community. Archived from the original on 2013-12-16. Retrieved 2013-12-16.
  8. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate User Guide: 2.5.5. Provide identifier attribute". JBoss Community.
  9. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate 3.5.0-Final release". In Relation To... April 2010.
  10. ^ Page Module:Citation/CS1/styles.css has no content."Releases - Hibernate ORM". hibernate.org.
  11. ^ Page Module:Citation/CS1/styles.css has no content."In Relation To... Hibernate ORM 4.1.9.Final Released". Archived from the original on 2013-01-29. Retrieved 2012-12-13.
  12. ^ Page Module:Citation/CS1/styles.css has no content."GC: Hibernate-core-4.2.0.Final.jar - GrepCode Java Project Source". Archived from the original on 2014-12-05. Retrieved 2014-11-27.
  13. ^ Page Module:Citation/CS1/styles.css has no content."GC: Hibernate-core-4.3.0.Final.jar - GrepCode Java Project Source". Archived from the original on 2014-12-05. Retrieved 2014-11-27.
  14. ^ Page Module:Citation/CS1/styles.css has no content."Releases - Hibernate ORM". hibernate.org.
  15. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate 6.0 Final". hibernate.org.
  16. ^ Page Module:Citation/CS1/styles.css has no content."An Introduction to Hibernate 6". docs.jboss.org.
  17. ^ a b Page Module:Citation/CS1/styles.css has no content."6.6 series - Hibernate ORM". Hibernate. Retrieved 2026-02-24.
  18. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate 7 (and Hibernate Validator 9)". In Relation To.
  19. ^ Page Module:Citation/CS1/styles.css has no content."7.1 series - Hibernate ORM". Hibernate. Retrieved 2026-02-24.
  20. ^ Page Module:Citation/CS1/styles.css has no content."7.2 series - Hibernate ORM". Hibernate. Retrieved 2026-02-24.
  21. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate JavaDocs". docs.jboss.org.
  22. ^ Page Module:Citation/CS1/styles.css has no content."Session (Hibernate JavaDocs)". docs.jboss.org.
  23. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate: Relational Persistence for Java and .NET". JBoss Community.
  24. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate ORM 4.1.0 Release". JBoss Community. 9 February 2012.
  25. ^ Page Module:Citation/CS1/styles.css has no content."HIBERNATE - Relational Persistence for Idiomatic Java". JBoss Community.
  26. ^ Page Module:Citation/CS1/styles.css has no content."No more hibernate-annotations module". JBoss Community. 5 April 2012.
  27. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate Annotations". JBoss Community.
  28. ^ Page Module:Citation/CS1/styles.css has no content."hibernate-entitymanager merged into hibernate-core". JBoss Community.
  29. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate EntityManager". JBoss Community.
  30. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate Envers – Easy Entity Auditing". JBoss Community.
  31. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate OGM". JBoss Community.
  32. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate Shards". JBoss Community.
  33. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate Search". JBoss Community.
  34. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate Tools for Eclipse and Ant". JBoss Community.
  35. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate Validator". JBoss Community.
  36. ^ Page Module:Citation/CS1/styles.css has no content."Hibernate Processor". JBoss Community.
  37. ^ Page Module:Citation/CS1/styles.css has no content."NHibernate". NHibernate Forge. Retrieved 2011-04-26.{{cite web}}: CS1 maint: deprecated archival service (link)

Bibliography

Page Template:Refbegin/styles.css has no content.

Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found. Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found.

Lua error in package.lua at line 80: module 'Module:Authority control/config' not found.