nHibernate по сравнению с LLBLGen Pro

Вы можете использовать этот :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ConnectMSSQLServer
{
   public void dbConnect(String db_connect_string,
            String db_userid,
            String db_password)
   {
      try {
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         Connection conn = DriverManager.getConnection(db_connect_string,
                  db_userid, db_password);
         System.out.println("connected");
         Statement statement = conn.createStatement();
         String queryString = "select * from sysobjects where type='u'";
         ResultSet rs = statement.executeQuery(queryString);
         while (rs.next()) {
            System.out.println(rs.getString(1));
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args)
   {
      ConnectMSSQLServer connServer = new ConnectMSSQLServer();
      connServer.dbConnect("jdbc:sqlserver://", "",
               "");
   }
}

26
задан Rippo 11 July 2009 в 17:26
поделиться

7 ответов

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

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

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

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

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

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

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

34
ответ дан 28 November 2019 в 06:21
поделиться

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

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

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

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

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

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

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

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

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

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

20
ответ дан Philippe Leybaert 15 October 2019 в 07:13
поделиться

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

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

Изучение обоих ORM в любом случае полезно для вашего резюме.

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

Изучение обоих ORM в любом случае полезно для вашего резюме.

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

8
ответ дан 28 November 2019 в 06:21
поделиться

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

2
ответ дан 28 November 2019 в 06:21
поделиться

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

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

1
ответ дан 28 November 2019 в 06:21
поделиться

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

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

2
ответ дан 28 November 2019 в 06:21
поделиться

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

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

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

6
ответ дан 28 November 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: