NHibernate
Эта статья содержит контент, написанный как реклама . ( Март 2012 г. ) |
Стабильная версия | 5.5.0
/ 24 декабря 2023 г |
---|---|
Репозиторий | |
Написано в | С# |
Операционная система | Кросс-платформенный |
Платформа | .NET 4.6.1, .NET Standard 2.0, .NET Core 2.0 и Mono |
Тип | Объектно-реляционное отображение |
Лицензия | Меньшая стандартная общественная лицензия GNU 2.1 |
Веб-сайт | http://nhibernate.info |
NHibernate — это порт Hibernate инструмента объектно-реляционного сопоставления (ORM) для платформы Microsoft .NET . Он обеспечивает основу для сопоставления объектно-ориентированной модели предметной области с традиционной реляционной базой данных . Его цель — избавить разработчика от значительной части задач программирования, связанных с сохранением реляционных данных . NHibernate — это бесплатное программное обеспечение с открытым исходным кодом , которое распространяется по лицензии GNU Lesser General Public License .
Краткое описание функций
[ редактировать ]Основная функция NHibernate — сопоставление классов .NET с таблицами базы данных (и CLR типов данных с типами данных SQL ). NHibernate предоставляет инструменты запроса и извлечения данных. Он генерирует команды SQL и устраняет необходимость ручной обработки наборов данных и преобразования объектов, обеспечивая переносимость приложения для большинства баз данных SQL, при этом переносимость базы данных обеспечивается с очень небольшими затратами на производительность.
NHibernate обеспечивает прозрачное сохранение для простых старых объектов CLR (POCO). Единственное строгое требование для постоянного класса — это конструктор без аргументов , который не обязательно должен быть открытым. (Правильное поведение в некоторых приложениях также требует особого внимания к методам Equals() и GetHashCode().) [1]
История
[ редактировать ]Том Барретт основал NHibernate, а позже его подхватили Майк Дорфлер и Питер Смуловиц. В конце 2005 года компания JBoss , Inc. (ныне часть Red Hat ) наняла Сергея Кощеева, тогдашнего ведущего разработчика NHibernate, для постоянной работы над его будущими версиями. [2] В конце 2006 года JBoss прекратил поддержку этого проекта. NHibernate теперь полностью разрабатывается и возглавляется сообществом. Логотип NHibernate, разработанный Андреем Майоровым, был выбран где-то до 2008 года. На нем изображена соня , известная своими длительными периодами спячки . [3]
Версия 1.0 отражает набор функций Hibernate 2.1, а также ряд функций Hibernate 3.
NHibernate 1.2.1, выпущенный в ноябре 2007 года, представил множество дополнительных функций Hibernate 3 и поддержку .NET 2.0, хранимых процедур , дженериков и типов, допускающих значение NULL.
НХибернейт 2.0
[ редактировать ]NHibernate 2.0 был выпущен 23 августа 2008 года. По своим возможностям он сравним с Hibernate 3.2. С выпуском версии 2.0 NHibernate прекратил поддержку .NET 1.1. [4]
NHibernate 2.1 был выпущен 17 июля 2009 года.
НХибернейт 3.0
[ редактировать ]NHibernate 3.0 был выпущен 4 декабря 2010 г. и является первой версией, использующей .NET 3.5, с такими функциями, как:
- Интегрированная LINQ. поддержка
- Строго типизированный API-интерфейс, подобный критериям, под названием QueryOver.
- Новый AST для движка HQL парсер на основе
- Поддержка отложенной загрузки столбцов.
Нгибернейт 3.2
[ редактировать ]NHibernate 3.2 был выпущен в апреле 2011 года. Новые функции включали: [5]
- Сопоставление по коду: свободная настройка, файлы .hbm.xml больше не требуются;
- Подвыбор: возможность отображать представления SQL как сущности;
- Пейджинг HQL: ВЗЯТЬ и ПРОПУСТИТЬ на HQL;
- Интегрированный поставщик байт-кода: требуется развертывание на одну DLL меньше.
НХибернейт 4.0
[ редактировать ]NHibernate 4.0 был выпущен 17 августа 2014 года. [6] Для этой версии требуется .NET Framework 4.0 или более поздняя версия.
НХибернейт 5.0
[ редактировать ]NHibernate 5.0 был выпущен 10 октября 2017 года. Он обеспечивает поддержку асинхронного программирования. [7] Для этой версии требуется .NET Framework 4.6.1 или более поздняя версия.
Нгибернейт 5.1
[ редактировать ]NHibernate 5.1 был выпущен 17 марта 2018 г. Он поддерживает .NET Standard 2.0 и .NET Core 2.0. [8]
Нгибернейт 5.2
[ редактировать ]NHibernate 5.2 был выпущен 4 декабря 2018 г. [8]
Нгибернейт 5.3
[ редактировать ]NHibernate 5.3 был выпущен 19 июля 2020 года. [9]
Взносы
[ редактировать ]Будучи программным обеспечением с открытым исходным кодом , NHibernate получил множество отзывов от своих пользователей. Реализация LINQ позволила использовать Language Integrated Query с NHibernate. [10]
Профилировщик NHibernate
[ редактировать ]NHibernate Profiler — это инструмент объектно-реляционного сопоставления (ORM), который служит визуальным отладчиком в реальном времени для NHibernate. Он выявляет неэффективные запросы данных SQL, чтобы исключить ненужную работу базы данных и повысить общую производительность приложения. NHibernate Profiler также предупреждает пользователей о запросах данных, которые требуют слишком много времени, и направляет их на точную строку кода C# . [11]
Образец
[ редактировать ]Здесь фрагмент кода для добавления объекта в базу данных и показывает, как получить, изменить и обновить объект в базе данных с помощью 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<Customer>.
// Only when .FirstOrDefault is called will NHibernate execute the SQL query
Customer customer = session.Query<Customer>().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 может влиять на выполнение NHibernate операторов SQL.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ hibernate.org - Равные и HashCode
- ^ [Hibernate] NHibernate присоединяется к Hibernate в JBoss Inc.
- ^ Берггрен, Оскар (20 октября 2012 г.). «nhibernate-core/logo/Logo History.txt в master · nhibernate/nhibernate-core» . Гитхаб . Проверено 24 апреля 2024 г.
- ^ От NH1.2.1GA до NH2.0.0 - NHibernate
- ^ «Выпущен NHibernate 3.2» . weblogs.asp.net . Проверено 25 января 2019 г.
- ^ «Выпущен NHibernate 4.0.0.GA» . groups.google.com . Проверено 25 января 2019 г.
- ^ «Выпущен NHibernate 5.0 — NHibernate» . nhibernate.info . Проверено 25 января 2019 г.
- ^ Jump up to: а б «Выпущен NHibernate 5.2.0 — Группы Google» . Проверено 25 января 2019 г.
- ^ «Выпущен NHibernate 5.3» . nhibernate.info . Проверено 10 сентября 2020 г.
- ^ Реализация Linq для NHibernate: практическое руководство - часть 1
- ^ «Профилировщик NHibernate» . hibernatingrhinos.com . Спящие носороги . Проверено 20 мая 2020 г.
Библиография
[ редактировать ]- Дентлер, Джейсон (4 октября 2010 г.). Поваренная книга NHibernate 3.0 (1-е изд.). Пакт Паблишинг . ISBN 978-1-84951-304-3 .
- Кюр, Аарон (5 мая 2010 г.). Руководство для начинающих NHibernate 2 (1-е изд.). Пакт Паблишинг . ISBN 978-1-84719-890-7 .
- Куате, Пьер Анри; Харрис, Тобин; Бауэр, Кристиан; Кинг, Гэвин (февраль 2009 г.). NHibernate в действии . Публикации Мэннинга . ISBN 978-1-932394-92-4 .
- Перкинс, Бенджамин (сентябрь 2011 г.). Работа с NHibernate 3.0 (1-е изд.). Врокс . ISBN 978-1-11811-257-1 .