Ответ 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-карты могут принести значительную выгоду таблице, которая может снизить затраты на внедрение, улучшить ремонтопригодность и обеспечить большую гибкость бизнеса.
Надеюсь, что ответит на вопрос.;)