HOME

TheInfoList



OR:

NHibernate is a port of the
Hibernate Hibernation is a state of minimal activity and metabolic reduction entered by some animal species. Hibernation is a seasonal heterothermy characterized by low body-temperature, slow breathing and heart-rate, and low metabolic rate. It is most ...
object–relational mapping Object–relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between a relational database and the memory (usually the heap) of an object-oriented programming language. This ...
(ORM) framework for the
Microsoft .NET The Microsoft .NET strategy is a marketing plan that Microsoft followed in the early 2000s. Steve Ballmer described it as the company's "most ambitious undertaking since Internet Strategy Day in 1995". In support of this strategy, between 2000 an ...
platform. It provides a framework for mapping an
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
domain model In software engineering, a domain model is a conceptual model of the domain (software engineering), domain that incorporates both behavior and data.Fowler, Martin. "P of EAA - Domain Model"/ref> In ontology engineering, a domain model is a Knowl ...
to a traditional
relational database A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970. A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
. It is used to map an
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
domain model to a
relational database A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970. A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
, aiming to reduce the amount of manual coding required for data persistence. NHibernate is
free and open-source software Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
, distributed under the
GNU Lesser General Public License The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
.


Feature summary

NHibernate's primary feature is mapping from .NET classes to database tables (and from CLR data types to
SQL Structured Query Language (SQL) (pronounced ''S-Q-L''; or alternatively as "sequel") is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling s ...
data types). NHibernate provides data query and retrieval tools. It generates the SQL commands and removes the need of manual data set handling and object conversion, keeping the application portable to most SQL databases, with database portability delivered at very little performance overhead. NHibernate provides transparent persistence for Plain Old CLR Objects (POCOs). The only strict requirement for a persistent class is a no-argument constructor, which does not have to be public. (Proper behavior in some applications also requires special attention to the Equals() and GetHashCode() methods.)


History

Tom Barrett started NHibernate, and later picked up by Mike Doerfler and Peter Smulovics. At the end of 2005,
JBoss WildFly, formerly known as JBoss AS, or simply JBoss, is an application server written by JBoss, now developed by Red Hat. WildFly is written in Java and implements the Java Platform, Enterprise Edition (Java EE) specification. It runs on mult ...
, Inc. (now part of
Red Hat Red Hat, Inc. (formerly Red Hat Software, Inc.) is an American software company that provides open source software products to enterprises and is a subsidiary of IBM. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North ...
) hired Sergey Koshcheyev, the then lead developer of NHibernate, to work full-time on its future versions. At the end of 2006, JBoss stopped the support to this project. NHibernate is now entirely developed and led by the community. The NHibernate logo, designed by Andrew Mayorov, was chosen sometime before 2008. It features a
dormouse A dormouse is a rodent of the family Gliridae (this family is also variously called Myoxidae or Muscardinidae by different taxonomists). Dormice are nocturnal animals found in Africa, Asia, and Europe. They are named for their long, dormant hibe ...
, which is known for its long periods of
hibernation Hibernation is a state of minimal activity and metabolic reduction entered by some animal species. Hibernation is a seasonal heterothermy characterized by low body-temperature, slow breathing and heart-rate, and low metabolic rate. It is mos ...
. Version 1.0 mirrored the feature set of Hibernate 2.1, as well as a number of features from Hibernate 3. NHibernate 1.2.1, released in November 2007, introduced many more features from Hibernate 3 and support for .NET 2.0,
stored procedure A stored procedure (also termed prc, proc, storp, sproc, StoPro, StoredProc, StoreProc, sp, or SP) is a subroutine available to applications that access a relational database management system (RDBMS). Such procedures are stored in the database d ...
s, generics, and nullable types.


NHibernate 2.0

NHibernate 2.0 was released on August 23, 2008. It is comparable to Hibernate 3.2 in terms of features. With the version 2.0 release, NHibernate dropped support for .NET 1.1. NHibernate 2.1 was released July 17, 2009.


NHibernate 3.0

NHibernate 3.0 was released on December 4, 2010, and is the first version to use .NET 3.5, with features such as: * Integrated
LINQ LinQ (pronounced "link") is a Japanese girl group. Their name stands for "Love in Qshu", in reference to their hometown of Fukuoka, on the island of Kyushu. Members The members were formerly divided into two groups, Qty and Lady. Current *Yuumi ...
support * Strongly typed criteria-like API called QueryOver * New AST-based parser for HQL engine * Support for lazy loading columns


NHibernate 3.2

NHibernate 3.2 was released in April, 2011. New features included: * Mapping by code: fluent configuration, .hbm.xml files are no longer required; * Subselect: ability to map SQL views as entities; * HQL paging: TAKE and SKIP on HQL; * Integrated bytecode provider: one less DLL to deploy.


NHibernate 4.0

NHibernate 4.0 was released on August 17, 2014. This version requires .NET Framework 4.0 or later.


NHibernate 5.0

NHibernate 5.0 was released on October 10, 2017. It provides support for asynchronous programming. This version requires .NET Framework 4.6.1 or later.


NHibernate 5.1

NHibernate 5.1 was released on March 17, 2018. It supports .NET Standard 2.0 and .NET Core 2.0.


NHibernate 5.2

NHibernate 5.2 was released on December 4, 2018.


NHibernate 5.3

NHibernate 5.3 was released on July 19, 2020.


Contributions

As
open source software Open-source software (OSS) is Software, computer software that is released under a Open-source license, license in which the copyright holder grants users the rights to use, study, change, and Software distribution, distribute the software an ...
, NHibernate has received many contributions from its users. Implementation of
LINQ LinQ (pronounced "link") is a Japanese girl group. Their name stands for "Love in Qshu", in reference to their hometown of Fukuoka, on the island of Kyushu. Members The members were formerly divided into two groups, Qty and Lady. Current *Yuumi ...
has allowed Language Integrated Query use with NHibernate.


NHibernate Profiler

The NHibernate Profiler is an Object–Relational Mapping tool (ORM) that serves as a real-time visual debugger for NHibernate. It identifies inefficient SQL data queries to eliminate unnecessary work by the database to boost overall performance of the application. The NHibernate Profiler also alerts users to data queries that cost too much in time and directs them to the exact line in the C# code.


Sample

Here a code snippet to add an object to the database and shows how to retrieve, modify and update an object in the database using NHibernate. //Add a Customer to the datastore //'sessionFactory' is a thread-safe object built once per application lifetime (can take seconds to build) //based on configuration files which control how database tables are mapped to C# objects //(e.g. which property maps to which column in a database table) // //'session' is not thread safe and fast to obtain and can be thought of as a connection to the database using (var session = sessionFactory.OpenSession()) //Retrieve the Customer from the database, modify the record and update the database using (var session = sessionFactory.OpenSession()) NHibernate's configuration may affect when NHibernate executes SQL statements.


See also

* List of object–relational mapping software * .NET Persistence API (NPA)


References


Bibliography

* * * *


External links


NHibernate homepage
{{DEFAULTSORT:Nhibernate Free software programmed in C Sharp .NET programming tools .NET object-relational mapping tools Object–relational mapping