Подтвердить что ты не робот

Что такое NHibernate?

В качестве продолжения моего предыдущего вопроса. Я программист ASP.NET, и мне интересно, как NHibernate поможет мне облегчить мою работу и быстрее, чем в противном случае. Притворись, я ничего не знаю о NHibernate. Что это, и что он может сделать для меня?

4b9b3361

Ответ 1

NHibernate - это ORM, или Object-Relational Mapper. В той же линии, что и LINQ to SQL, Entity Framework, LLBLGen и другие, инструменты ORM устраняют большую часть необходимости писать хранимые процедуры для обработки общего доступа к данным (CRUD) для ваших бизнес-объектов. Инструменты ORM требуют, чтобы вы создавали (вручную или с визуальным дизайнером... зависит от выбранного вами) спецификацию сопоставления, которая отслеживает, какие свойства ваших объектов сопоставляются с столбцами ваших таблиц и/или представлений в вашей базе данных. Когда вам нужно восстановить объекты, инструмент ORM генерирует для вас соответствующий SQL и отправляет его в базу данных. Когда придет время для обновления ваших объектов, ORM не только создаст SQL для вставки, обновления и удаления для вас... он также будет выполнять эти команды так, чтобы одно соединение и пакет команд были отправлены в базу данных и выполняет все это в транзакции. Инструменты ORM также могут повысить эффективность ваших запросов, позволяя вам выбирать целые графы объектов за один проход, генерируя наиболее эффективный SQL для этой задачи.

С инструментами ORM вам все равно нужно запрашивать, однако вы либо с базовыми методами в контексте ORM, либо с объектом сеанса, либо с пользовательским языком запросов для этого ORM. В наши дни большинство ORM, включая NHibernate, также поддерживают LINQ, что позволяет использовать стандартный синтаксис LINQ для запроса вашей объектной модели, который, в свою очередь, переводится в SQL-запросы к вашей базе данных для вас.

Преимущество OR-mappers заключается в том, что вы централизуете почти весь свой код в свой домен, а не разделяете его между доменом и хранимыми процедурами. Вы облегчаете загрузку хранимой процедуры в своей базе данных, предоставляя меньше возможностей для рефакторинга вашей базы данных, если это когда-либо возникнет, обеспечивая большую гибкость бизнеса не только в вашем домене, но и в вашей схеме базы данных. Поскольку вам не нужно писать SQL, и особенно если вы используете LINQ, вы можете часто создавать более эффективное приложение при меньших затратах при более низких долгосрочных затратах на обслуживание.

Помимо неизбежной войны с вашим администратором баз данных (если у вас есть), OR-карты могут принести значительную выгоду таблице, которая может снизить затраты на внедрение, улучшить ремонтопригодность и обеспечить большую гибкость бизнеса.

Надеюсь, что ответит на вопрос.;)

Ответ 2

Хорошее введение и учебное пособие можно найти здесь Лето из NHibernate Screencasts.

В каждом видео он представляет введение в тему в nHibernate, а затем погружается в некоторый код, объясняя, как делать разные вещи. Я нашел это очень полезным.

Ответ 3

nhibernate - это инструмент ORM

dimecasts содержит несколько видео, которые могут вас запустить

Вы можете найти дополнительную информацию здесь

И еще больше информации о google:)

Ответ 4

У Manning есть неплохая книга: NHibernate in Action

Книга находится на NHibernate версии 1.2, но большая часть ее применима к последней версии.

Ответ 5

NHibernate - это инструмент ORM (Object-Relational Mapper). Он создает объектно-ориентированную модель, основанную на вашей схеме базы данных.

От https://www.hibernate.org/343.html

Основные функции NHibernate:

  • Модель естественного программирования - NHibernate поддерживает естественную OO-идиому; наследование, полиморфизм, состав и структура коллекций .NET, включая общие коллекции.

  • Native.NET - API-интерфейс NHibernate использует соглашения и идиомы .NET

  • Поддержка мелкозернистых объектных моделей - богатое разнообразие отображений для коллекций и зависимых объектов

  • Улучшение байт-кода без добавления времени сборки - в вашей процедуре сборки нет дополнительных операций генерации кода или обработки байт-кода.

  • Параметры запроса - NHibernate обращается к обеим сторонам проблемы; не только как получить объекты в базе данных, но и как их получить снова

  • Пользовательский SQL - укажите точный SQL, который NHibernate должен использовать для сохранения ваших объектов. Хранимые процедуры поддерживаются на Microsoft SQL Server.

  • Поддержка "разговоров" - NHibernate поддерживает долгоживущие контексты персистентности, отсоединение/повторную привязку объектов и автоматически оптимизирует блокировку

  • Свободный/открытый источник - NHibernate лицензируется в соответствии с LGPL (Публикация с меньшим объемом GNU)