NHibernate - NHibernate
Эта статья содержит контент, который написан как Реклама.Март 2012 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Стабильный выпуск | 5.3.2 / 9 августа 2020 г. |
---|---|
Репозиторий | |
Написано в | 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.
Смотрите также
Рекомендации
- ^ hibernate.org - равно и HashCode
- ^ [Hibernate] NHibernate присоединяется к Hibernate в JBoss Inc
- ^ От NH1.2.1GA к NH2.0.0 - NHibernate
- ^ «Выпущен NHibernate 3.2». weblogs.asp.net. Получено 2019-01-25.
- ^ «Выпущен NHibernate 4.0.0.GA». groups.google.com. Получено 2019-01-25.
- ^ «Выпущен NHibernate 5.0 - NHibernate». nhibernate.info. Получено 2019-01-25.
- ^ а б «Выпущен NHibernate 5.2.0 - Группы Google». Получено 2019-01-25.
- ^ «Выпущен NHibernate 5.3». nhibernate.info. Получено 2020-09-10.
- ^ Реализация Linq для NHibernate: практическое руководство - часть 1
- ^ «Профилировщик NHibernate». hibernatingrhinos.com. Спящие носороги. Получено 2020-05-20.
Библиография
- Дентлер, Джейсон (4 октября 2010 г.). Поваренная книга NHibernate 3.0 (1-е изд.). Packt Publishing. ISBN 1-84951-304-X.
- Cure, Аарон (5 мая 2010 г.). NHibernate 2 Руководство для начинающих (1-е изд.). Packt Publishing. ISBN 1-84719-890-2.
- Куате, Пьер Анри; Харрис, Тобин; Бауэр, Кристиан; Кинг, Гэвин (февраль 2009 г.). NHibernate в действии. Публикации Мэннинга. ISBN 1-932394-92-3.
- Перкинс, Бенджамин (сентябрь 2011 г.). Работа с NHibernate 3.0 (1-е изд.). Wrox. ISBN 1-11811-257-1.