Hibernate (framework)
Hibernate ORM (or simply Hibernate) is an object–relational mapping[2]: §1.2.2, [12] 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. Hibernate is free software that is 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. MappingThe 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.[2]: 140–171 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:
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 (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.[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. PersistenceHibernate provides transparent persistence for Plain Old Java Objects (POJOs).[2]: 37–38 The only strict requirement for a persistent class is a no-argument constructor,[2]: 39 though not necessarily Collections of data objects are typically stored in Java collection classes, such as implementations of the Related objects can be configured to cascade operations from one object to the other. For example, a parent IntegrationHibernate 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 componentsIn Hibernate jargon, an entity is a stand-alone object in Hibernate's persistent mechanism which can be manipulated independently of other objects.[2]: 62–74 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. HistoryHibernate 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[update], 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.[5] 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.[6] In December 2012, Hibernate ORM 4.1.9 Final was released.[7] In Mar 2013, Hibernate ORM 4.2 Final was released.[8] In December 2013, Hibernate ORM 4.3.0 Final was released.[9] 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.[10] In October 2022, Hibernate ORM 6.1.4 Final was released.[11] Application programming interfaceThe Hibernate API is provided in the Java package org.hibernate.SessionFactory interfaceThe org.hibernate.Session interfaceThe A Software componentsThe Hibernate software includes the following components:[14]
See also
References
Bibliography
External links |