Hibernate (framework): Difference between revisions

Content deleted Content added
m update latest version
No edit summary
Tag: Reverted
Line 17:
}}
 
'''Hibernate ORM''' (or simply '''Hibernate''') is an [[object-relational mapping]] 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.
 
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 [[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.
 
==Mapping==
The mapping of Java classes to database tables is implemented by the configuration of an [[XML]] file or by using [[Java annotation|Java Annotations]]. When using an XML file, Hibernate can [[Program synthesis|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 (data model)|one-to-many]] and [[Many-to-many (data model)|many-to-many]] relationships between classes. In addition to managing associations between objects, Hibernate can also manage [[Reflexive relation|reflexive]] associations wherein an object has a one-to-many relationship with other instances of the [[Class (computer programming)|class]] [[data type|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 [[Enumerated type|Enums]] to columns as though they were regular properties.
* Mapping a single property to multiple columns.
 
'''Definition:'''
Objects in an [[Object-oriented programming|object-oriented]] application follow [[object-oriented programming|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 an [[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 programming|object-oriented]] 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.