nHibernate против LLBLGen Pro - PullRequest
       19

nHibernate против LLBLGen Pro

26 голосов
/ 11 июля 2009

Я пытаюсь использовать инструмент ORM, чтобы перейти к нему, и сузил его до двух кандидатов.

nHibernate или LLBLGen Pro

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

Я уже знаю, что кто-то свободен, а кто-то нет, я также знаю, что nHibernate может потребоваться некоторое обучение ....

Большое спасибо, Ричард

Ответы [ 8 ]

34 голосов
/ 13 июля 2009

Я использовал оба. Сначала я был продан на nHibernate и отказался попробовать что-либо еще, хотя я знал о других вариантах.

С LLBLGen Pro я был настроен скептически, но вскоре увидел и преимущества. Я не полностью отказался от Hibernate. Я буду продолжать хранить int в моем «ящике с инструментами». Я нашел LLBLGen полезным в некоторых случаях, особенно при взаимодействии с базой данных, которая уже существует, и у вас нет выбора для ее перепроектирования. Для генерации моих объектов сущности LLBLGen из базы данных требуется менее часа (в зависимости от размера базы данных), в отличие от необходимости кодировать все это вручную с помощью nHibernate и выполнять сопоставления. В nHibernate отсутствует красивый графический интерфейс для создания отображений. Этот факт становится еще более важным, когда база данных огромна с тысячами таблиц, к которым вам потенциально необходим доступ в вашем приложении.

Хотя LLBLGen является скорее генератором уровня доступа к данным (и я обычно не фанат генераторов DAL), он обладает множеством функций, которыми обладает инструмент «истинного ORM». На мой взгляд, это лучшее из обоих миров. Как только вы начинаете работать с ним, вы начинаете понимать, что он очень гибкий и расширяемый. Одна часть, которая мне очень нравится, - это то, что я могу создать частичные классы для сгенерированных объектов-сущностей, где я могу кодировать в своей бизнес-логике и проверять правильность.

Генерация кода основана на шаблонах, поэтому вы можете полностью контролировать код, который он генерирует. С nHibernate я снова и снова пишу один и тот же код. С LLBLGen я могу сгенерировать его и быстрее сосредоточиться на бизнес-логике и проблемах.

Для тех, кто только начинает использовать инструменты типа ORM, я действительно рекомендую начинать с LLBLGen, потому что nHibernate может быть подавляющим. И в итоге вы добьетесь того же результата (более или менее).

Редактирование # 1: LLBLGen теперь также имеет 100% поддержку LINQ. (Поэтому, если вам нравится LINQ to SQL по этой причине), далее LLBLGen может поддерживать множество баз данных, где LINQ to SQL предназначен только для базы данных Microsoft SQL.

Правка № 2: Согласно Graviton вы можете использовать CodeSmith, чтобы сделать часть кода, генерируемого для вас для nHibernate. Это действительно круто, но для новичка в ORM я все равно рекомендую LLBLGen. Для меня это добавляет больше зависимостей, где LLBLGen имеет все это в одном пакете. Также, как я уже говорил, кривая обучения намного менее крута, и вы получите те же преимущества, которые также помогут вам легко перейти на nHibernate, если вы когда-нибудь решите туда пойти.

20 голосов
/ 11 июля 2009

Основным отличием является то, что LLBLGen является генератором кода, а NHibernate является "истинной" библиотекой ORM.

Преимущества LLBLGen :

  • Простой в использовании дизайнер модели. Может импортировать существующую схему базы данных
  • Полностью типизированная объектная модель и язык запросов

Недостатки LLBLGen :

  • Вам нужно приложение дизайнера, чтобы изменить модель
  • Не бесплатно
  • Может раздуть ваш код, потому что генерируется много кода

Преимущества NHibernate :

  • Дизайнерское приложение не требуется. Только код
  • Широко используется (на основе самой популярной Java ORM, Hibernate)
  • Очень мощный инструмент для отображения любой модели данных, которую вы можете себе представить
  • Открытый исходный код

Недостатки NHibernate :

  • Трудно учиться
  • Не так строго набрано, как хотелось бы (особенно запросы)

Конечно, это только моя личная точка зрения ...

8 голосов
/ 18 сентября 2009

Я набрал довольно длинный ответ, прежде чем понял, что это довольно старый вопрос. Ну что ж. Это все еще очень актуально.

Вы сузили свой список до двух лучших кандидатов на ORM в мире .NET. У меня ограниченный опыт работы с обоими, но я много читал о плюсах и минусах обоих. Они действительно удовлетворяют несколько разные потребности по-разному.

В предстоящем выпуске LLBLGen Pro 3.0 Франс Боума рассказал о добавлении функций для создания отображений NHibernate. Так что это даже не обязательно либо решение, либо решение.

Если вы хотите сделать дизайн «первым классом» (в отличие от проекта «сначала база данных»), NHibernate сейчас в значительной степени ваш лучший и единственный вариант (ни LLBLGen Pro, ни Entity Framework не поддерживают этот режим, хотя он звучит как Entity Framework улучшает свою поддержку в следующей версии).

NHibernate и LLBLGen Pro усердно работают, чтобы хорошо работать с устаревшими базами данных, которые вы не можете изменить и с которыми приходится жить. Это их общая сила. Они оба также работают с Линком. Они оба также поддерживают некоторое количество графического моделирования, хотя LLBLGen Pro в этом отношении намного превосходит их ( ActiveWriter для NHibernate выглядит как дизайнер LinqToSql в Visual Studio, но на самом деле он не настолько богат, как многофункциональный).

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

В то время как NHibernate хочет помочь вам работать с довольно сложными сценариями объектно-реляционного отображения, такими как наследование классов, LLBLGen Pro действительно просто представляет вашу базу данных как слой данных и бизнес-объекты очень быстро.

Если вы можете приобрести LLBLGen Pro и у вас будет время, я попробую оба варианта и выясню, какой из них лучше соответствует вашим потребностям. Изучение обоих ORM полезно для вашего резюме в любом случае.

Итак, в конце я бы сказал, что это ситуативный. Стоимость NHibernate и отсутствие у него серьезных недостатков в большинстве ситуаций являются довольно убедительными аргументами.

6 голосов
/ 01 июля 2010

Новая версия LLBLGen Pro (3.0) позволяет генерировать код для NHibernate, поэтому не нужно выбирать :). Это также позволяет вам разделить ваши сущности на разные домены.

Я все еще предпочитаю время выполнения LLBLGen pro, хотя интерпретатор LINQ более полон и лучше отслеживает изменения полей.

К сожалению, в новой среде выполнения LLBLGen Pro 3.0 не так много новых функций, поскольку создатель сначала хотел больше сосредоточиться на инструментах, чем на улучшении существующей инфраструктуры.

3 голосов
/ 30 августа 2011

Я использовал nHibernate, LLBLGen Pro, пользовательский уровень данных от моей консалтинговой компании, Enterprise Library и LINQ. LLBLGen, безусловно, мой любимый, и он позволяет писать один бизнес-уровень, который может взаимодействовать с различными типами баз данных, используя один и тот же код, обеспечивая независимость базы данных! Еще одна невероятная особенность - это возможность нескольких подключений к разным базам данных. Это очень полезно, когда в большой компании одна система написана на Sql Server, а другая, с которой вам приходится взаимодействовать, находится в Oracle.

LLBLGen Pro - удивительный продукт, созданный при поддержке Франса, который очень активен и усердно работает над решением проблем. LLBLGen похож на PhotoShop, это невероятный инструмент, который может создавать удивительные эффекты в руках того, кто знает, как его использовать. И, как и любой инструмент, который экономит много времени, на изучение того, как его использовать, уходит неделя или две, но через месяц вы сэкономите на вашем проекте.

Это не только ускорило процесс создания DAL моего приложения, но и позволяет легко создавать запросы на бизнес-уровне и отправлять на уровень представления. Это позволило легко создать приложение корпоративного класса.

Если кто-то действительно хочет использовать nHibernate, начните с LLBLGen Pro и сгенерируйте код nHibernate. Если в дальнейшем ваш отдел решит перейти с nHibernate на LINQ, вы застрахованы. Хотите перейти с Sql Server на Oracle? Это возможно и относительно просто с LLBLGen, тогда как с кодом nHibernate, закодированным вручную, вы должны переписать все, что практически невозможно оправдать стоимостью.

Франс также был доступен и ответил на некоторые мои вопросы.

2 голосов
/ 02 июня 2010

Для меня все сводится к центру базы данных (LLBLGen Pro) и модели домена (NHibernate).

Поскольку я парень DDD / OO, выбор всегда был для меня очень легким, но я понимаю, почему LLBLGen Pro популярен.

2 голосов
/ 18 сентября 2009

Не забывайте один из величайших плюсов Hibernate: HQL. С HQL ваши навыки SQL не пропадут даром. И Hibernate обеспечивает очень хорошую и плавную поддержку собственных запросов. Если у вас есть какая-то странная, нестандартная база данных, почти наверняка вам понадобятся навыки SQL в какой-то момент и удачи с LLBL!

1 голос
/ 17 сентября 2009

Мы используем LLBLGen на работе, и он оскорблен, а именно потому, что у нас есть несколько схожих схем, но вам нужно иметь разные библиотеки DLL / классов для каждой схемы, а это значит, что писать код, который может быть нацелен на любую схему, становится раздражающим .

Конечно, это необычная среда, поэтому она может к вам не относиться.

...