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

NHibernate против LLBLGen Pro

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

nHibernate или LLBLGen Pro

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

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

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

4b9b3361

Ответ 1

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

С LLBLGen Pro я был настроен скептически, но вскоре увидел и преимущества. Я не полностью отказался от nHibernate. Я буду продолжать держать int в моей "коробке инструментов". Я нашел LLBLGen полезным в некоторых случаях, особенно при взаимодействии с уже существующей базой данных, и у вас нет выбора перепроектировать ее. Разумеется, требуется меньше часа (в зависимости от размера базы данных), чтобы генерировать объекты LLBLGen Entity из базы данных, в отличие от необходимости записывать все это вручную с помощью 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, если вы когда-нибудь решите пойти туда.

Ответ 2

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

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

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

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

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

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

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

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

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

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

Ответ 3

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

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

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

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

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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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