NHibernate - NHibernate

NHibernate
NHibernate-logo.svg
Стабильный выпуск
5.3.2 / 9 августа 2020 г.; 3 месяца назад (2020-08-09)
Репозиторий Отредактируйте это в Викиданных
Написано вC #
Операционная системаКроссплатформенность
Платформа.СЕТЬ 4.6.1, .NET Standard 2.0, .NET Core 2.0 и Мононуклеоз
ТипОбъектно-реляционное отображение
ЛицензияСтандартная общественная лицензия ограниченного применения GNU 2.1
Интернет сайтhttp://nhibernate.info

NHibernate является объектно-реляционное отображение (ORM) решение для Microsoft .NET Платформа. Он обеспечивает рамки для отображения объектно-ориентированный модель предметной области традиционному реляционная база данных. Его цель - избавить разработчика от значительной части реляционных данных. упорство связанные с программированием задачи. NHibernate - это свободный в качестве программное обеспечение с открытым исходным кодом который распространяется под Стандартная общественная лицензия ограниченного применения GNU. NHibernate - это порт Спящий режим.

Обзор возможностей

Основная функция NHibernate - отображение классов .NET в таблицы базы данных (и из CLR типы данных для SQL типы данных). NHibernate также предоставляет средства запроса и поиска данных. NHibernate генерирует команды SQL и избавляет разработчика от ручной обработки наборов данных и преобразования объектов, сохраняя переносимость приложения для большинства баз данных SQL, а переносимость базы данных обеспечивается с очень небольшими накладными расходами.

NHibernate обеспечивает прозрачное постоянство для Обычные старые объекты CLR (POCO). Единственное строгое требование для постоянного класса - конструктор без аргументов, который не должен быть общедоступным. (Правильное поведение в некоторых приложениях также требует особого внимания к методам Equals () и GetHashCode ().)[1]

История

NHibernate был основан Томом Барреттом, а позже его подхватили Майк Дёрфлер и Питер Смулович. В конце 2005 г. JBoss, Inc. (теперь часть Красная шляпа ) нанял Сергея Кощеева, тогдашнего ведущего разработчика NHibernate, для работы над его будущими версиями.[2] В конце 2006 года JBoss прекратил поддержку этого проекта; теперь он полностью разработан и возглавляется сообществом.

Версия 1.0 отражает набор функций Hibernate 2.1, а также ряд функций Hibernate 3.

NHibernate 1.2.1, выпущенный в ноябре 2007 года, представил многие другие функции из Hibernate 3 и поддержку .NET 2.0, хранимые процедуры, универсальные типы и типы, допускающие значение NULL.

NHibernate 2.0

NHibernate 2.0 был выпущен 23 августа 2008 года. Он сопоставим с Hibernate 3.2 с точки зрения функций. С выпуском версии 2.0 NHibernate отказался от поддержки .NET 1.1.[3]

NHibernate 2.1 был выпущен 17 июля 2009 года.

NHibernate 3.0

NHibernate 3.0 был выпущен 4 декабря 2010 года и является первой версией, использующей .NET 3.5, с такими функциями, как:

  • Интегрированный LINQ поддерживать
  • Строго типизированный API-интерфейс, подобный критериям, под названием QueryOver
  • Новый AST парсер для движка HQL
  • Поддержка ленивой загрузки столбцов.

NHibernate 3.2

NHibernate 3.2 был выпущен в апреле 2011 года. Некоторые из новых функций:[4]

  • Отображение по коду: плавная настройка, файлы .hbm.xml больше не требуются;
  • Подвыбор: возможность отображать представления SQL как сущности;
  • Пейджинг HQL: TAKE и SKIP на HQL;
  • Встроенный провайдер байт-кода: на одну DLL меньше для развертывания.

NHibernate 4.0

NHibernate 4.0 был выпущен 17 августа 2014 года.[5] Эта версия требует .NET Framework 4.0 или новее.

NHibernate 5.0

NHibernate 5.0 был выпущен 10 октября 2017 года. Он обеспечивает поддержку асинхронного программирования.[6] Для этой версии требуется .NET Framework 4.6.1 или новее.

NHibernate 5.1

NHibernate 5.1 был выпущен 17 марта 2018 года. Он поддерживает .NET Standard 2.0 и .NET Core 2.0.[7]

NHibernate 5.2

NHibernate 5.2 был выпущен 4 декабря 2018 года.[7]

NHibernate 5.3

NHibernate 5.3 был выпущен 19 июля 2020 года.[8]

Взносы

В качестве программное обеспечение с открытым исходным кодом, NHibernate получил много отзывов от своих пользователей. Реализация LINQ разрешил использование Language Integrated Query с NHibernate.[9]

Профилировщик NHibernate

NHibernate Profiler - это инструмент объектно-реляционного сопоставления (ORM), который служит визуальным отладчиком в реальном времени для NHibernate. Он выявляет неэффективные запросы к данным SQL, чтобы исключить ненужную работу базы данных и повысить общую производительность приложения. Профилировщик NHibernate также предупреждает пользователей о запросах данных, которые требуют слишком больших затрат времени, и направляет их к точной строке в C # код.[10]

Образец

Здесь фрагмент кода для добавления объекта в базу данных и показывает, как получить, изменить и обновить объект в базе данных с помощью NHibernate.

// Добавляем клиента в хранилище данных// 'sessionFactory' - потокобезопасный объект, создаваемый один раз за время существования приложения (сборка может занять секунды)// на основе файлов конфигурации, управляющих отображением таблиц базы данных на объекты C #// (например, какое свойство соответствует какому столбцу в таблице базы данных)//// 'сеанс' не является потокобезопасным и быстрым для получения и может рассматриваться как соединение с базой данныхс помощью (вар сессия = sessionFactory.OpenSession()) {    // транзакция представляет собой транзакцию БД    с помощью (ITransaction сделка = сессия.BeginTransaction())     {        // Строка ниже добавляет клиента в список объектов NHibernate для вставки в базу данных        // но на данном этапе не выполняет команду вставки SQL *.        // * если поле Id генерируется базой данных (например, автоматически увеличивающееся число)         // тогда NHibernate выполнит SQL INSERT при вызове .Save         сессия.Сохранять(новый Покупатель { Идентификатор = Гид.NewGuid(), Имя = "Босс", Возраст = 50 });        // Вызов ниже выполнит SQL INSERT и зафиксирует транзакцию        сделка.Совершить();    }}// Извлекаем клиента из базы данных, изменяем запись и обновляем базу данныхс помощью (вар сессия = sessionFactory.OpenSession()){    с помощью (ITransaction сделка = сессия.BeginTransaction())     {        // Запрос сеанса возвращает IQueryable .        // Только при вызове .FirstOrDefault NHibernate выполнит SQL-запрос         Покупатель покупатель = сессия.Запрос<Покупатель>().Где(c => c.Токен == жетон).FirstOrDefault();            // Теперь клиент является «частью» объекта «сеанс», а NHibernate отслеживает изменения        // сделано для этого         если (покупатель != ноль)         {            // Изменение свойства объекта НЕ приводит к выполнению SQL            покупатель.TokenVerified = истинный;                // Фиксация результатов транзакции в SQL-запросе UPDATE            // NHibernate отслеживал, что 'customer' был изменен с момента загрузки             сделка.Совершить();        }    }}

Конфигурация NHibernate может повлиять на выполнение NHibernate операторов SQL.

Смотрите также

Рекомендации

  1. ^ hibernate.org - равно и HashCode
  2. ^ [Hibernate] NHibernate присоединяется к Hibernate в JBoss Inc
  3. ^ От NH1.2.1GA к NH2.0.0 - NHibernate
  4. ^ «Выпущен NHibernate 3.2». weblogs.asp.net. Получено 2019-01-25.
  5. ^ «Выпущен NHibernate 4.0.0.GA». groups.google.com. Получено 2019-01-25.
  6. ^ «Выпущен NHibernate 5.0 - NHibernate». nhibernate.info. Получено 2019-01-25.
  7. ^ а б «Выпущен NHibernate 5.2.0 - Группы Google». Получено 2019-01-25.
  8. ^ «Выпущен NHibernate 5.3». nhibernate.info. Получено 2020-09-10.
  9. ^ Реализация Linq для NHibernate: практическое руководство - часть 1
  10. ^ «Профилировщик NHibernate». hibernatingrhinos.com. Спящие носороги. Получено 2020-05-20.

Библиография

внешняя ссылка