Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Hibernate (framework)

From Wikipedia, the free encyclopedia
(Redirected fromHibernate (Java))
Object–relational mapping tool
Hibernate ORM
DeveloperRed Hat
Initial release23 May 2001; 24 years ago (2001-05-23)
Stable release
7.0.0.Final / May 19, 2025; 6 months ago (2025-05-19)[1]
Repository
Written inJava
Operating systemCross-platform (JVM)
PlatformJava Virtual Machine
TypeObject–relational mapping
LicenseApache License 2.0
Websitehibernate.org/orm/

Hibernate ORM (or simplyHibernate) is anobject–relational mapping[2]: §1.2.2, [12]  tool for theJava programming language. It provides aframework for mapping anobject-oriented domain model to arelational database. Hibernate handlesobject–relational impedance mismatch problems by replacing direct,persistent database accesses with high-level object handling functions.[3]

Hibernate isfree software that is distributed under theApache License. Versions prior to 7.0.0.Beta4 were distributed under theGNU Lesser General Public License 2.1.

Hibernate's primary feature is mapping from Java classes todatabase tables, and mapping from Java data types toSQL 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

[edit]

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

Mapping

[edit]

The mapping of Java classes to database tables is implemented by the configuration of anXML file or by usingJava Annotations. When using an XML file, Hibernate cangenerate skeletonsource code for the persistence classes. This is auxiliary when annotations are used. Hibernate can use the XML file or the Java annotations to maintain thedatabase schema.

There are provided facilities to arrangeone-to-many andmany-to-many relationships between classes.[2]: 140–171  In addition to managing associations between objects, Hibernate can also managereflexive associations wherein an object has a one-to-many relationship with other instances of theclasstype.

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 JavaEnums to columns as though they were regular properties.[2]: 89–90 
  • Mapping a single property to multiple columns.

Definition:Objects in anobject-oriented application followOOP principles, while objects in the back-end followdatabase 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)

[edit]

Hibernate provides aSQL inspired language called Hibernate Query Language[7] (HQL) for writing SQL-like queries against Hibernate's data objects.Criteria Queries are provided as anobject-oriented alternative to HQL. Criteria Query is used to modify the objects and provide the restriction for the objects.[2]: 347–349 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

[edit]

Hibernate provides transparent persistence forPlain Old Java Objects (POJOs).[2]: 37–38  The only strict requirement for a persistent class is ano-argument constructor,[2]: 39  though not necessarilypublic. Proper behavior in some applications also requires special attention to theequals(Object obj) andhashCode() methods in theObject classes.[8] Hibernate recommends providing an identifier attribute, and this is planned to be a mandatory requirement in a future release.[9]

Collections of data objects are typically stored in Java collection classes, such as implementations of theSet andList interfaces.Java generics, introduced in Java 5, are also supported. Hibernate can be configured tolazy load associated collections.[2]: 289–293  Lazy loading is the default as of Hibernate 3.

Related objects can be configured tocascade operations from one object to the other. For example, a parentAlbum class object can be configured to cascade itssave anddelete operations to its childTrack class objects.

Integration

[edit]

Hibernate can be used both in standaloneJava applications and inJava EE applications usingservlets,EJB session beans, andJBI service components. It can also be included as a feature in other programming languages. For example,Adobe integrated Hibernate into version 9 ofColdFusion (which runs on J2EE app servers) with an abstraction layer of new functions and syntax added intoCFML.

Entities and components

[edit]

In Hibernatejargon, anentity is a stand-alone object in Hibernate'spersistent mechanism which can be manipulated independently of other objects.[2]: 62–74  In contrast, acomponent 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 acomponent 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

[edit]

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 ofRed 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.0Annotations (Java'smetadata feature). As of 2010[update], Hibernate 3 (version 3.5.0 and up) was a certified implementation of theJava Persistence API 2.0 specification via a wrapper for the Core module which provides conformity with the JSR 317 standard.[10]

In Dec 2011, Hibernate Core 4.0.0 Final was released. This includes new features such asmulti-tenancy support, introduction of ServiceRegistry (a major change in how Hibernate builds and manages "services"), better session opening from SessionFactory, improved integration viaorg.hibernate.integrator.spi.Integrator and auto discovery,internationalization support, message codes in logging, and a more distinction between the API, SPI or implementation classes.[11]

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

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

In December 2013, Hibernate ORM 4.3.0 Final was released.[14] It featuresJava 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 featuredJava Persistence API 2.2 inheritance caching.

In December 2018, Hibernate ORM 5.4.0 Final was released.[15]

In March, 2022, Hibernate ORM 6.0.0 Final was released,[16] a "major redesign [which] has touched almost every subsystem of Hibernate, including the APIs, mapping annotations, and the query language".[17]

In October 2022, Hibernate ORM 6.1.4 Final was released.[18]

In May 2025, Hibernate ORM 7.0.0 Final was released,[19] with support for Jakarta Persistence 3.2 and Jakarta Data 1.0.

Application programming interface

[edit]

The Hibernate API is provided in theJava packageorg.hibernate.[20]

org.hibernate.SessionFactory interface

[edit]

Theorg.hibernate.SessionFactory interface is the native equivalent version of the JPA's standardEntityManagerFactory.[2]: 26 

org.hibernate.Session interface

[edit]

Theorg.hibernate.Session interface[21] 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[clarification needed]) of the objects, fetching the persisted ones from the database and the management of the transaction demarcation[clarification needed].

ASession 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

[edit]

The Hibernate software includes the following components:[22]

  • Hibernate ORM (known as Hibernate Core before release 4.1[23]) – the base software for an object–relational mapping solution for Java environments[24]
  • Hibernate Annotations (merged into Hibernate Core/ORM since version 3.6[25]) – metadata that governs the transformation of data between the object-oriented model and the relational database model according to the JSR 317Java Persistence API (JPA 2)[26]
  • Hibernate EntityManager (merged into Hibernate Core/ORM since version 5.2[27])– together with Hibernate Annotations, a wrapper that implements a JSR 317Java Persistence API (JPA 2) persistence solution[28]
  • Hibernate Envers – auditing and versioning of persistent classes[29]
  • Hibernate OGM (Object/Grid Mapper) – an extension to store data in aNoSQL store[30]
  • Hibernate Shards –horizontal partitioning for multiple relational databases[31]
    • 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 fromApache Lucene in the Hibernate and JPA model[32]
  • Hibernate Tools – a set of tools implemented as a suite ofEclipse plugins andAnt tasks included inJBoss Developer Studio[33]
  • Hibernate Validator – thereference implementation of JSR 303Bean Validation[34][2]: 49–51 
  • Hibernate Metamodel Generator – an annotation processor that creates JSR 317Java Persistence API (JPA 2) static metamodel classes using the JSR 269Pluggable Annotation Processing API[35]
  • NHibernate – an object–relational mapping solution for the.NET Framework[36]

See also

[edit]

References

[edit]
  1. ^"Hibernate ORM - 7.0 series". Retrieved27 May 2025.
  2. ^abcdefghijBauer, King & Gregory 2015.
  3. ^"A Short Guide to Hibernate 7".docs.jboss.org.
  4. ^"Jakarta Persistence 3.2".jakarta.ee.
  5. ^"Jakarta Data 1.0".jakarta.ee.
  6. ^"Introducing Hibernate Data Repositories".docs.jboss.org.
  7. ^"A Guide to Hibernate Query Language".docs.jboss.org.
  8. ^"Equals and HashCode". JBoss Community. Archived fromthe original on 2013-12-16. Retrieved2013-12-16.
  9. ^"Hibernate User Guide: 2.5.5. Provide identifier attribute". JBoss Community.
  10. ^"Hibernate 3.5.0-Final release". In Relation To... April 2010.
  11. ^"Releases - Hibernate ORM".hibernate.org.
  12. ^"In Relation To... Hibernate ORM 4.1.9.Final Released". Archived fromthe original on 2013-01-29. Retrieved2012-12-13.
  13. ^"GC: Hibernate-core-4.2.0.Final.jar - GrepCode Java Project Source". Archived fromthe original on 2014-12-05. Retrieved2014-11-27.
  14. ^"GC: Hibernate-core-4.3.0.Final.jar - GrepCode Java Project Source". Archived fromthe original on 2014-12-05. Retrieved2014-11-27.
  15. ^"Releases - Hibernate ORM".hibernate.org.
  16. ^"Hibernate 6.0 Final".hibernate.org.
  17. ^"An Introduction to Hibernate 6".docs.jboss.org.
  18. ^Boriero, Andrea (5 October 2022)."Hibernate ORM 6.1.4.Final released".In Relation To. Retrieved2022-10-11.
  19. ^"Hibernate 7 (and Hibernate Validator 9)".In Relation To.
  20. ^"Hibernate JavaDocs".docs.jboss.org.
  21. ^"Session (Hibernate JavaDocs)".docs.jboss.org.
  22. ^"Hibernate: Relational Persistence for Java and .NET". JBoss Community.
  23. ^"Hibernate ORM 4.1.0 Release". JBoss Community. 9 February 2012.
  24. ^"HIBERNATE - Relational Persistence for Idiomatic Java". JBoss Community.
  25. ^"No more hibernate-annotations module". JBoss Community. 5 April 2012.
  26. ^"Hibernate Annotations". JBoss Community.
  27. ^"hibernate-entitymanager merged into hibernate-core". JBoss Community.
  28. ^"Hibernate EntityManager". JBoss Community.
  29. ^"Hibernate Envers – Easy Entity Auditing". JBoss Community.
  30. ^"Hibernate OGM". JBoss Community.
  31. ^"Hibernate Shards". JBoss Community.
  32. ^"Hibernate Search". JBoss Community.
  33. ^"Hibernate Tools for Eclipse and Ant". JBoss Community.
  34. ^"Hibernate Validator". JBoss Community.
  35. ^"Hibernate Metamodel Generator". JBoss Community.
  36. ^"NHibernate". NHibernate Forge. Archived fromthe original on 2012-07-12. Retrieved2011-04-26.

Bibliography

[edit]

External links

[edit]
Platforms
Technologies
Oracle
Platform
Major
third-party
History
JVM
languages
Community
Conferences
Organizations
People
Authority control databasesEdit this at Wikidata
Retrieved from "https://en.wikipedia.org/w/index.php?title=Hibernate_(framework)&oldid=1317280868"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp