Jump to content

NHibernate

NHibernate
Стабильная версия
5.5.0 / 24 декабря 2023 г .; 7 месяцев назад ( 24.12.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.

См. также

[ редактировать ]
  1. ^ hibernate.org - Равные и HashCode
  2. ^ [Hibernate] NHibernate присоединяется к Hibernate в JBoss Inc.
  3. ^ Берггрен, Оскар (20 октября 2012 г.). «nhibernate-core/logo/Logo History.txt в master · nhibernate/nhibernate-core» . Гитхаб . Проверено 24 апреля 2024 г.
  4. ^ От NH1.2.1GA до NH2.0.0 - NHibernate
  5. ^ «Выпущен NHibernate 3.2» . weblogs.asp.net . Проверено 25 января 2019 г.
  6. ^ «Выпущен NHibernate 4.0.0.GA» . groups.google.com . Проверено 25 января 2019 г.
  7. ^ «Выпущен NHibernate 5.0 — NHibernate» . nhibernate.info . Проверено 25 января 2019 г.
  8. ^ Jump up to: а б «Выпущен NHibernate 5.2.0 — Группы Google» . Проверено 25 января 2019 г.
  9. ^ «Выпущен NHibernate 5.3» . nhibernate.info . Проверено 10 сентября 2020 г.
  10. ^ Реализация Linq для NHibernate: практическое руководство - часть 1
  11. ^ «Профилировщик NHibernate» . hibernatingrhinos.com . Спящие носороги . Проверено 20 мая 2020 г.

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

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 01a097584d9aa189b7f382afe3f4aa1f__1713925740
URL1:https://arc.ask3.ru/arc/aa/01/1f/01a097584d9aa189b7f382afe3f4aa1f.html
Заголовок, (Title) документа по адресу, URL1:
NHibernate - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)