请输入您要查询的百科知识:

 

词条 NHibernate
释义

  1. Feature summary

  2. History

      NHibernate 2.0    NHibernate 3.0    NHibernate 3.2    NHibernate 4.0    NHibernate 5.0    NHibernate 5.1    NHibernate 5.2  

  3. Contributions

  4. Sample

  5. See also

  6. References

  7. Bibliography

  8. External links

{{About|the .NET and Mono library||Hibernate}}{{advert|date=March 2012}}{{Infobox software
| logo = NHibernate-logo.svg
| name = NHibernate
| latest release version = 5.2.3
| latest release date = {{Start date and age|2019|1|14}}
| latest preview version =
| latest preview date =
| operating system = Cross-platform
| platform = .NET 4.6.1, .NET Standard 2.0, .NET Core 2.0, and Mono
| programming language = C#
| genre = Object-relational mapping
| license = GNU Lesser General Public License 2.1
| website = http://nhibernate.info
}}

NHibernate is an object-relational mapping (ORM) solution for the Microsoft .NET platform. It provides a framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a significant portion of relational data persistence-related programming tasks. NHibernate is free as open source software that is distributed under the GNU Lesser General Public License. NHibernate is a port of Hibernate.

Feature summary

NHibernate's primary feature is mapping from .NET classes to database tables (and from CLR data types to SQL data types). NHibernate also provides data query and retrieval facilities. NHibernate generates the SQL commands and relieves the developer from 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.)[1]

History

NHibernate was started by Tom Barrett, and later picked up by Mike Doerfler and Peter Smulovics. At the end of 2005, JBoss, Inc. (now part of Red Hat) hired Sergey Koshcheyev, the then lead developer of NHibernate, to work full-time on its future versions.[2] At the end of 2006 JBoss stopped the support to this project; it is now entirely developed and led by the community.

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 procedures, 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.[3]

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 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. Some of the new features were:[4]

  • 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.[5] 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.[6] 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.[7]

NHibernate 5.2

NHibernate 5.2 was released on December 4, 2018.[7]

Contributions

As open source software, NHibernate has received many contributions from its users.

Implementation of LINQ has allowed Language Integrated Query use with NHibernate.[8]

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())

{
    //transaction represents a db transaction    using (ITransaction transaction = session.BeginTransaction())     {        //The line below adds the customer to NHibernate's list of objects to insert to the database        //but it doesn't execute SQL insert command at this stage*.        //*if the Id field is generated by the database (e.g. an auto-incremented number)         //then NHibernate will execute SQL INSERT when .Save is called          session.Save(new Customer { Id = Guid.NewGuid(), FirstName = "Boss", Age = 50 });
        //The call below will execute the SQL INSERT and commit the transaction        transaction.Commit();    }

}

//Retrieve the Customer from the database, modify the record and update the database

using (var session = sessionFactory.OpenSession())

{
    using (ITransaction transaction = session.BeginTransaction())     {        //session's Query returns IQueryable.        //Only when .FirstOrDefault is called will NHibernate execute the SQL query          Customer customer = session.Query().Where(c => c.Token == token ).FirstOrDefault();            //Now the customer is 'part of' the 'session' object and NHibernate keeps track of changes        //made to it         if( customer != null )         {            //Changing a property of an object does NOT cause SQL to be executed            customer.TokenVerified = true;               //Committing the transaction results in an SQL UPDATE statement           //NHibernate kept track of the fact that 'customer' has been changed since loading            transaction.Commit();        }    }

}

NHibernate's configuration may affect when NHibernate executes SQL statements.

See also

{{Portal|Free and open-source software}}
  • List of object-relational mapping software
  • .NET Persistence API (NPA)

References

1. ^hibernate.org - Equals and HashCode
2. ^[Hibernate] NHibernate joins Hibernate at JBoss Inc]
3. ^From NH1.2.1GA to NH2.0.0 - NHibernate
4. ^{{Cite web|url=https://weblogs.asp.net/ricardoperes/nhibernate-3-2-released|title=NHibernate 3.2 Released|website=weblogs.asp.net|language=en-US|access-date=2019-01-25}}
5. ^{{Cite web|url=https://groups.google.com/forum/#!topic/nhusers/_NTLpl2R4_o|title=NHibernate 4.0.0.GA released|last=|first=|date=|website=groups.google.com|archive-url=|archive-date=|dead-url=|access-date=2019-01-25}}
6. ^{{Cite web|url=https://nhibernate.info/blog/2017/10/10/nhibernate-5-0-released.html|title=NHibernate 5.0 Released - NHibernate|website=nhibernate.info|access-date=2019-01-25}}
7. ^{{Cite web|url=https://groups.google.com/forum/#!topic/nhusers/e59YwW8ICv4|title=NHibernate 5.2.0 Released - Google Groups|last=|first=|date=|archive-url=|archive-date=|dead-url=|access-date=2019-01-25}}
8. ^Implementing Linq for NHibernate: A How To Guide - Part 1

Bibliography

  • {{Cite book

| first1 = Jason
| last1 = Dentler
| date = October 4, 2010
| title = NHibernate 3.0 Cookbook
| edition = 1st
| publisher = Packt Publishing
| isbn = 1-84951-304-X
| url = https://www.packtpub.com/nhibernate-3-0-cookbook/book
}}
  • {{Cite book

| first1 = Aaron
| last1 = Cure
| date = May 5, 2010
| title = NHibernate 2 Beginner's Guide
| edition = 1st
| publisher = Packt Publishing
| isbn = 1-84719-890-2
| url = https://www.packtpub.com/nhibernate-2-x-beginners-guide/book
}}
  • {{cite book

| first1 = Pierre Henri
| last1 = Kuaté
| first2 = Tobin
| last2 = Harris
| first3 = Christian
| last3 = Bauer
| first4 = Gavin
| last4 = King
| title = NHibernate in Action
| publisher = Manning Publications
| year = February 2009
| isbn = 1-932394-92-3
| url =
}}
  • {{Cite book

| first1 = Benjamin
| last1 = Perkins
| date = September 2011
| title = Working with NHibernate 3.0
| edition = 1st
| publisher = Wrox
| isbn = 1-11811-257-1
| url = http://www.wrox.com/WileyCDA/WroxTitle/Working-with-NHibernate-3-0.productCd-1118112571.html
}}

External links

  • NHibernate Homepage
{{DEFAULTSORT:Nhibernate}}{{Portal bar|.NET Framework}}

4 : Free software programmed in C Sharp|.NET programming tools|.NET object-relational mapping tools|Object-relational mapping

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/13 15:42:51