Стабильная версия | 5.3.2 / 9 августа 2020 г.; 2 месяца назад (2020-08-09) |
---|---|
Репозиторий | |
Написано на | C# |
Операционной системе | Cross- платформа |
Платформа | .NET 4.6.1,.NET Standard 2.0, .NET Core 2.0 и Mono |
Тип | Объектно-реляционное сопоставление |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU 2.1 |
Веб-сайт | http://nhibernate.info |
NHibernate - это объектно-реляционное сопоставление (ORM) решение для платформы Microsoft.NET. Он обеспечивает структуру для отображения объектно-ориентированной модели предметной области с традиционной реляционной базой данных. Его цель - освободить разработчика от значительной части задач программирования, связанных с персистентностью реляционных данных. NHibernate является бесплатным как программное обеспечение с открытым исходным кодом, которое распространяется по Стандартной общественной лицензии ограниченного применения GNU. NHibernate - это порт Hibernate.
Основная функция NHibernate - отображение классов.NET в таблицы базы данных (и из CLR типы данных в SQL типы данных). NHibernate также предоставляет средства запроса и поиска данных. NHibernate генерирует команды SQL и освобождает разработчика от ручной обработки наборов данных и преобразования объектов, сохраняя переносимость приложения для большинства баз данных SQL, а переносимость базы данных обеспечивается с минимальными издержками производительности.
NHibernate обеспечивает прозрачную сохраняемость для простых старых объектов CLR (POCO). Единственное строгое требование для постоянного класса - конструктор без аргументов, который не должен быть общедоступным. (Правильное поведение в некоторых приложениях также требует особого внимания к методам Equals () и GetHashCode ().)
NHibernate был запущен Томом Барреттом, а позже поднят Майком Дёрфлером и Петр Смулович. В конце 2005 года JBoss, Inc. (ныне часть Red Hat ) наняла Сергея Кощеева, тогдашнего ведущего разработчика NHibernate, для работы над его будущими версиями. В конце 2006 года JBoss прекратил поддержку этого проекта; теперь он полностью разработан и возглавляется сообществом.
Версия 1.0 отражает набор функций Hibernate 2.1, а также ряд функций из Hibernate 3.
NHibernate 1.2.1, выпущенный в ноябре 2007 года, представил многие другие функции из Hibernate 3 и поддержка.NET 2.0, хранимых процедур, универсальных типов и типов, допускающих значение NULL.
NHibernate 2.0 был выпущен 23 августа 2008 года. Он сопоставим с Hibernate 3.2 с точки зрения функций. В выпуске версии 2.0 NHibernate отказался от поддержки.NET 1.1.
NHibernate 2.1 был выпущен 17 июля 2009 г.
NHibernate 3.0 был выпущен 4 декабря, 2010 и является первой версией, использующей.NET 3.5, с такими функциями, как:
NHibernate 3.2 был выпущен в апреле 2011 года. Некоторые из новых были следующие функции:
NHibernate 4.0 был выпущен 17 августа 2014 года. Для этой версии требуется .NET Framework 4.0 или новее.
NHibernate 5.0 был выпущен 10 октября 2017 года. Он обеспечивает поддержку асинхронного программирования. Для этой версии требуется.NET Framework 4.6.1 или новее.
NHibernate 5.1 был выпущен 17 марта 2018 г. Он поддерживает.NET Standard 2.0 и .NET Core 2.0.
NHibernate 5.2 был выпущен 4 декабря 2018 года.
NHibernate 5.3 был выпущен 19 июля 2020 года.
Как программное обеспечение с открытым исходным кодом, NHibernate получил много отзывов от своих пользователей. Реализация LINQ позволила использовать Language Integrated Query с NHibernate.
NHibernate Profiler - это инструмент объектно-реляционного сопоставления (ORM), который служит настоящим -time визуальный отладчик для NHibernate. Он выявляет неэффективные запросы к данным SQL, чтобы исключить ненужную работу со стороны базы данных и повысить общую производительность приложения. Профилировщик NHibernate также предупреждает пользователей о запросах данных, которые требуют слишком больших затрат времени, и направляет их на точную строку в коде C#.
Здесь фрагмент кода для добавления объекта в базу данных и показывает, как получать, изменять и обновлять объект в базе данных с помощью NHibernate.
// Добавление клиента в хранилище данных // 'sessionFactory' - потокобезопасный объект, создаваемый один раз за время существования приложения (для создания может потребоваться несколько секунд) // на основе файлов конфигурации, которые управляют тем, как таблицы базы данных отображаются на объекты C # // (например, какое свойство сопоставляется с каким столбцом в таблице базы данных) // // 'сеанс' не является потокобезопасным и быстрым для получения и может рассматриваться как соединение с базой данных с использованием (var session = sessionFactory.OpenSession ()) {// транзакция представляет собой транзакцию БД с использованием (ITransaction transaction = session.BeginTransaction ()) {// Строка ниже добавляет клиента в список объектов NHibernate для вставки в базу данных // но не выполняет SQL insert команда на этом этапе *. // * если поле Id создается базой данных (например, автоматически увеличивающееся число) // тогда NHibernate выполнит SQL INSERT, когда.Save вызывается session.Save (new Customer {Id = Guid.NewGuid (), FirstName = «Босс», Возраст = 50}); // Вызов ниже выполнит SQL INSERT и зафиксирует транзакцию transaction.Commit (); }} // Извлекаем клиента из базы данных, изменяем запись и обновляем базу данных, используя (var session = sessionFactory.OpenSession ()) {using (ITransaction transaction = session.BeginTransaction ()) {// Запрос сеанса возвращает IQueryable. // Только при вызове.FirstOrDefault NHibernate выполнит SQL-запрос Customer customer = session.Query ().Where (c =>c.Token == token).FirstOrDefault (); // Теперь клиент является «частью» объекта «сеанс», и NHibernate отслеживает изменения, // внесенные в него if (customer! = Null) {// Изменение свойства объекта НЕ приводит к выполнению SQL-запроса customer.TokenVerified = true; // Фиксация транзакции приводит к SQL-запросу UPDATE // NHibernate отслеживает, что «клиент» был изменен с момента загрузки транзакции.Commit (); }}}
Конфигурация NHibernate может влиять на выполнение NHibernate операторов SQL.