NHibernate O / R Вопрос - PullRequest
       21

NHibernate O / R Вопрос

1 голос
/ 17 марта 2009

За эти годы я написал много кодов ejb, oledb и ADO. Мой опыт работы с O / R мапперами - в лучшем случае они - свиньи для скорости, в худшем - кошмар, наполненный ошибками.

Стоит ли хлопот NHibernate или Spring .NET и почему?

Ответы [ 6 ]

3 голосов
/ 17 марта 2009

Я не использовал модуль данных Spring.Net, поэтому я не буду комментировать это. Я использовал Spring.Net для его МОК. В общем, я думаю, что вы можете добиться большего успеха для этого.

NHibernate очень хорош. Это будет медленнее, чем прямо ADO.Net, но в целом вам не о чем беспокоиться. Ключевым моментом является то, что NHibernate позволяет быстро получить и запустить код базы данных, поэтому вы можете беспокоиться о реальном коде приложения. Ваше приложение больше, чем база данных.

Затем, когда вы найдете запрос, который занимает много времени и влияет на производительность приложения, переписайте метод TH, используя традиционный подход.

Есть и другие альтернативы, Entity Framework, SubSonic, LLBLGen и т. Д.

2 голосов
/ 17 марта 2009

Как упомянул Мэтт, ORM очень важны для разделения проблем, которые они допускают при разработке вашего приложения. Конечно, большой компромисс - это грубая производительность. Я полагаю, что философия заключается в том, что вы всегда можете масштабировать свои аппаратные ресурсы, но вы не можете легко масштабировать и расширять тесно связанный код.

Если вы ищете в .net пространстве, обратите внимание на Lightspeed . Это коммерческий ORM, но значительно более быстрый, чем NHibernate, и, как правило, более интуитивно понятный для работы.

1 голос
/ 17 марта 2009

Если вы не возражаете против тесной связи с SQL Server и относительно жесткой связи со схемой, вы можете рассмотреть LINQ to SQL . Это часть фреймворка, довольно простая и на удивление легко программируемая. Вы можете приступить к работе и кодировать ее за считанные минуты, используя конструктор, который поставляется с VS 2008.

Тем не менее, LINQ to SQL - не самое главное; NHibernate, безусловно, более надежен во многих отношениях, и также происходит полная миграция Entity Framework .

Но LINQ to SQL не является медведем для скорости. И я могу сказать вам по своему опыту, что, хотя дизайнер не совсем без ошибок, он довольно надежен, и базовые основы являются , а не глючными.

LINQ to SQL на самом деле является довольно мощным и зрелым ORM.

Если вам нужен рабочий пример силы LINQ to SQL, взгляните на этот сайт. Он использует LINQ to SQL для бэкэнда, и я не думаю, что он вообще медленный.

1 голос
/ 17 марта 2009

Полагаю, это зависит от вашего фокуса.

В моем магазине некоторые люди любят их (настоящие головы пропеллера Java / OO), а некоторые презирают их (с большими навыками SQL).

Я во 2-й группе, но я разработчик DBA.

Они сами по себе не злые, а просто полезный инструмент, если их правильно использовать без всякого религиозного багажа.

1 голос
/ 17 марта 2009

Они стоят «неприятностей», потому что они позволяют вам четко определить ваши данные в модели, которая отделена от поведения и другого кода. Вам не нужно писать собственный DAL. Они помогают с разделением интересов.

0 голосов
/ 18 марта 2009

NHibernate определенно стоит усилий. Как уже говорили другие, это медленнее, чем прямое использование ADO.Net и т. Д., Но я думаю, что повышение производительности того стоит. Что касается производительности, в NHibernate есть несколько настроек, которые можно ускорить:

  1. Ленивая загрузка - загружать дочерние объекты / коллекции только из БД, когда они действительно запрашиваются
  2. Кеширование - NHibernate имеет кеширование 1-го и 2-го уровня. Кэш 1-го уровня используется по умолчанию и означает, что NHibernate не будет запускать одинаковые запросы несколько раз в течение одного сеанса. Кэш 2-го уровня зависит от пользователя, где вы можете выбрать, какие операции кэшируются (сторонним механизмом кэширования), который NHibernate будет обрабатывать для вас. Например. если вы загружаете объект много раз (во всех сеансах), и объект изменяется редко, что делает его кэшируемым для ускорения процесса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...