Что такое NHibernate? - PullRequest
       26

Что такое NHibernate?

43 голосов
/ 06 июня 2009

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

Ответы [ 5 ]

82 голосов
/ 07 июня 2009

NHibernate - это ORM или объектно-реляционный картограф. В той же строке, что и 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 могут принести значительные преимущества в таблицу, которые могут сократить усилия по внедрению, улучшить обслуживание и обеспечить большую гибкость бизнеса.

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

7 голосов
/ 07 июня 2009

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

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

4 голосов
/ 06 июня 2009

nhibernate является инструментом ORM

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

Вы можете найти больше информации здесь

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

3 голосов
/ 07 июня 2009

У Мэннинга есть неплохая книга: NHibernate In Action

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

1 голос
/ 07 июня 2009

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

С https://www.hibernate.org/343.html

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

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

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

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

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

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

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

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

  • Бесплатный / с открытым исходным кодом - NHibernate распространяется по лицензии LGPL (Lesser GNU Public License)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...