Hibernate (framework): Difference between revisions

Content deleted Content added
WikiCleanerBot (talk | contribs)
m v2.05b - Bot T20 CW#61 - Fix errors for CW project (Reference before punctuation)
 
(13 intermediate revisions by 8 users not shown)
Line 6:
| developer = [[Red Hat]]
| released = {{Start date and age|2001|05|23|df=yes}}
| latest release version = 67.10.40.Final
| latest release date = {{Start date and age|2022|102025|05|19}}<ref>{{cite web|url=https://inhibernate.relation.toorg/2022orm/10releases/05/hibernate-orm-614-final7.0/|title= Hibernate ORM 6.1.4- 7.Final0 releasedseries |access-date=1127 OctoberMay 20222025}}</ref>
| latest preview version =
| latest preview date =
Line 14:
| platform = [[Java Virtual Machine]]
| genre = [[Object–relational mapping]]
| license = [[GNU Lesser General PublicApache License]] 2.0
| website = {{URL|httphttps://hibernate.org/orm/}}
}}
 
'''Hibernate ORM''' (or simply '''Hibernate''') is an [[object–relational mapping]]{{sfn|Bauer|King|Gregory|2015}}{{rp|§1.2.2|p=12}} tool for the [[Java (programming language)|Java]] programming language. It provides a [[Software framework|framework]] for mapping an [[Object-oriented programming|object-oriented]] ___domain model to a [[relational database]]. Hibernate handles [[object–relational impedance mismatch]] problems by replacing direct, [[Persistence (computer science)|persistent]] database accesses with high-level object handling functions.<ref>{{Cite web|url=https://docs.jboss.org/hibernate/orm/7.0/introduction/html_single/Hibernate_Introduction.html|title=A Short Guide to Hibernate 7|website=docs.jboss.org}}</ref>
 
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 [[Table (database)|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]]<ref>{{Cite web|url=https://jakarta.ee/specifications/persistence/3.2/|title=Jakarta Persistence 3.2|website=jakarta.ee}}</ref> (formerly Java Persistence API) and Jakarta Data<ref>{{Cite web|url=https://jakarta.ee/specifications/data/1.0/|title=Jakarta Data 1.0|website=jakarta.ee}}</ref><ref>{{Cite web|url=https://docs.jboss.org/hibernate/orm/6.6/repositories/html_single/Hibernate_Data_Repositories.html|title= Introducing Hibernate Data Repositories |website=docs.jboss.org}}</ref> specifications.
 
==Mapping==
Line 40 ⟶ 44:
 
==Hibernate Query Language (HQL)==
Hibernate provides a [[SQL]] inspired language called Hibernate Query Language<ref>{{Cite web|url=https://docs.jboss.org/hibernate/orm/7.0/querylanguage/html_single/Hibernate_Query_Language.html|title=A Guide to Hibernate Query Language|website=docs.jboss.org}}</ref> (HQL) for writing SQL-like queries against Hibernate's data objects. ''Criteria Queries'' are provided as an [[Object-oriented programming|object-oriented]] alternative to HQL. Criteria Query is used to modify the objects and provide the restriction for the objects.{{sfn|Bauer|King|Gregory|2015}}{{rp|§=14.1.1|p=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==
Hibernate provides transparent persistence for [[Plain Old Java Object]]s (POJOs).{{sfn|Bauer|King|Gregory|2015}}{{rp|§=3.2.2|pp=37–38}} The only strict requirement for a persistent class is a [[Nullary constructor|no-argument constructor]],{{sfn|Bauer|King|Gregory|2015}}{{rp|§=3.2.3|pp=39}} though not necessarily '''{{code|public}}'''. Proper behavior in some applications also requires special attention to the {{Javadoc|module=java.base|package=java.lang|class=Object|member=equals(java.lang.Object)|text=equals(Object obj)|monotype=y}} and {{Javadoc|module=java.base|package=java.lang|class=Object|member=hashCode()|text=hashCode()|monotype=y}} methods in the {{code|Object}} classes.<ref>{{cite web|title=Equals and HashCode|url=https://community.jboss.org/wiki/EqualsAndHashCode|publisher=JBoss Community|access-date=2013-12-16|archive-date=2013-12-16|archive-url=https://web.archive.org/web/20131216104403/https://community.jboss.org/wiki/EqualsAndHashCode|url-status=dead}}</ref> Hibernate recommends providing an identifier attribute, and this is planned to be a mandatory requirement in a future release.<ref>{{cite web|title=Hibernate User Guide: 2.5.5. Provide identifier attribute|url=http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#entity-pojo-identifier|publisher=JBoss Community}}</ref>
 
Collections of data objects are typically stored in Java collection classes, such as implementations of the {{Javadoc|module=java.base|package=java.util|class=Set|text=Set|monotype=y}} and {{Javadoc|module=java.base|package=java.util|class=List|text=List|monotype=y}} interfaces. [[Generics in Java|Java generics]], introduced in Java 5, are also supported. Hibernate can be configured to [[lazy load]] associated collections.{{sfn|Bauer|King|Gregory|2015}}{{rp|§=12.1|pp=289–293}} Lazy loading is the default as of Hibernate 3.
Line 63 ⟶ 67:
[[JBoss (company)|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 [[Java annotation|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#JPA 2.0|Java Persistence API 2.0]] specification via a wrapper for the Core module which provides conformity with the JSR 317 standard.<ref>{{cite web|title=Hibernate 3.5.0-Final release|date=April 2010 |url=http://in.relation.to/Bloggers/Hibernate350FinalRelease|publisher=In Relation To...}}</ref>
 
In Dec 2011, Hibernate Core 4.0.0 Final was released. This includes new features such as [http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#multitenacy 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 and localization|internationalization]] support, message codes in logging, and a more distinction between the API, SPI or implementation classes.<ref>{{Cite web|url=http://hibernate.org/orm/releases/|title=Releases - Hibernate ORM|website=hibernate.org}}</ref>
Line 81 ⟶ 85:
In December 2018, Hibernate ORM 5.4.0 Final was released.<ref>{{Cite web|url=http://hibernate.org/orm/releases/|title=Releases - Hibernate ORM|website=hibernate.org}}</ref>
 
In OctoberMarch, 2022, Hibernate ORM 6.10.40 Final was released.,<ref>{{Cite web |lasturl=Boriero https://in.relation.to/2022/03/31/orm-60-final/|firstwebsite=Andrea hibernate.org|title=Hibernate ORM 6.1.4.0 Final|language=en}}</ref> releaseda "major redesign [which] has touched almost every subsystem of Hibernate, including the APIs, mapping annotations, and the query language".<ref>{{Cite web|url=https://indocs.relationjboss.toorg/2022hibernate/10orm/056.6/hibernate-orm-614-finalintroduction/ html_single/Hibernate_Introduction.html#preface|access-datetitle=2022-10-11An |website=InIntroduction Relationto ToHibernate 6|languagewebsite=endocs.jboss.org}}</ref>
 
In October 2022, Hibernate ORM 6.1.4 Final was released.<ref>{{Cite web |last=Boriero |first=Andrea |title=Hibernate ORM 6.1.4.Final released |url=https://in.relation.to/2022/10/05/hibernate-orm-614-final/ |access-date=2022-10-11 |website=In Relation To |date=5 October 2022 |language=en}}</ref>
 
In May 2025, Hibernate ORM 7.0.0 Final was released,<ref>{{Cite web|url=https://in.relation.to/2025/05/20/hibernate-orm-seven/|title=Hibernate 7 (and Hibernate Validator 9)|website=In Relation To}}</ref> with support for Jakarta Persistence 3.2 and Jakarta Data 1.0.
 
==Application programming interface==
Line 98 ⟶ 106:
==Software components==
The Hibernate software includes the following components:<ref>{{cite web|title=Hibernate: Relational Persistence for Java and .NET|url=http://www.hibernate.org/|publisher=JBoss Community}}</ref>
* Hibernate ORM (known as Hibernate Core before release 4.1<ref>{{cite web|title=Hibernate ORM 4.1.0 Release|date=9 February 2012 |url=http://in.relation.to/Bloggers/HibernateORM410Release|publisher=JBoss Community}}</ref>) – the base software for an object–relational mapping solution for Java environments<ref>{{cite web|title=HIBERNATE - Relational Persistence for Idiomatic Java|url=http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/|publisher=JBoss Community}}</ref>
* Hibernate Annotations (merged into Hibernate Core/ORM since version 3.6<ref>{{cite web|title=No more hibernate-annotations module|date=5 April 2012 |url=http://in.relation.to/Bloggers/NoMoreHibernateannotationsModule|publisher=JBoss Community}}</ref>) – 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)<ref>{{cite web|title=Hibernate Annotations|url=http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/|publisher=JBoss Community}}</ref>
* Hibernate EntityManager (merged into Hibernate Core/ORM since version 5.2<ref>{{cite web|title=hibernate-entitymanager merged into hibernate-core|url=https://github.com/hibernate/hibernate-orm/wiki/Migration-Guide---5.2#hibernate-entitymanager-merged-into-hibernate-core|publisher=JBoss Community}}</ref>)– together with Hibernate Annotations, a wrapper that implements a JSR 317 [[Java Persistence API]] (JPA 2) persistence solution<ref>{{cite web|title=Hibernate EntityManager|url=http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html_single/|publisher=JBoss Community}}</ref>
* Hibernate Envers – auditing and versioning of persistent classes<ref>{{cite web|title=Hibernate Envers – Easy Entity Auditing|url=http://docs.jboss.org/hibernate/envers/3.6/reference/en-US/html_single/|publisher=JBoss Community}}</ref>
Line 171 ⟶ 179:
|url = http://oreilly.com/catalog/9780596517724/
}}
* {{cite book | lastlast1=Bauer | firstfirst1=Christian | last2=King | first2=Gavin | last3=Gregory | first3=Gary | title=Java Persistence with Hibernate | publisher=[[Manning Publications]] | date=November 8, 2015 | isbn=978-1-61729-045-9}}
*{{citation
|first1 = Jeff
Line 269 ⟶ 277:
[[Category:Red Hat software]]
[[Category:Persistence frameworks]]
[[Category:Software using the LGPLGNU licenseLesser General Public License]]
[[Category:Cross-platform free software]]