NHibernate

редактировать
NHibernate
NHibernate-logo.svg
Стабильная версия 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.

Содержание

  • 1 Обзор функций
  • 2 История
    • 2.1 NHibernate 2.0
    • 2.2 NHibernate 3.0
      • 2.2.1 NHibernate 3.2
    • 2.3 NHibernate 4.0
    • 2.4 NHibernate 5.0
      • 2.4.1 NHibernate 5.1
      • 2.4.2 NHibernate 5.2
      • 2.4.3 NHibernate 5.3
  • 3 Вклады
  • 4 NHibernate Profiler
  • 5 Пример
  • 6 См. Также
  • 7 Ссылки
  • 8 Библиография
  • 9 Внешние ссылки

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

Основная функция 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

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

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

NHibernate 3.0

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

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

NHibernate 3.2

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

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

NHibernate 4.0

NHibernate 4.0 был выпущен 17 августа 2014 года. Для этой версии требуется .NET Framework 4.0 или новее.

NHibernate 5.0

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

NHibernate 5.1

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

NHibernate 5.2

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

NHibernate 5.3

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

Материалы

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

NHibernate Profiler

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.

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

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

Внешние ссылки

Последняя правка сделана 2021-05-31 06:59:35
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте