когда использовать Hibernate против Simple ResultSets для небольших приложений - PullRequest
2 голосов
/ 28 мая 2010

Я только начал работать над обновлением небольшого компонента в распределенном Java-приложении. Основное приложение представляет собой довольно сложную комбинацию апплетов / сервлетов, работающую на JBoss, и широко использует Hibernate для своего DataAccess. Компонент, над которым я работаю, очень простой сервис для импорта данных.

В основном рабочий процесс

  1. Прослушивание сетевого события
  2. Разобрать пакет данных, извлечь набор идентификаторов
  3. Отображение идентификатора, установленного на первичный ключ в нашей базе данных
  4. Разобрать оставшуюся часть пакета и вставить элементы в связанную таблицу, используя внешний ключ, найденный на шаге 3
  5. Повторите

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

Так что, с одной стороны, я думаю, что я должен использовать Hibernate, потому что это то, что делает остальная часть приложения, но с другой, я думаю, что я должен просто использовать обычные классы java.sql. *, Потому что мои требования действительно просты и нереальны. не ожидается, что изменится в ближайшее время.

Так что мой вопрос (и я понимаю, что это субъективно), в какой момент вы считаете, что дополнительная сложность использования инструмента ORM (с точки зрения конфигурации, зависимостей ...) того стоит?

UPDATE

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

Ответы [ 3 ]

1 голос
/ 28 мая 2010

Если мы посмотрим, почему используется комбинация Spring-Hibernate? Потому что для простой операции Jdbc нам нужно выполнить много операций, например, получить соединение. Создание заявления и обработка результирующего набора. Для всех этих шагов есть много обработки исключений.

Но в весеннем спящем режиме вы должны использовать только это:

    public PostProfiles findPostProfilesById(long id) {
    List list=getHibernateTemplate().find("from PostProfiles where id=?",id);
    return (PostProfiles) list.get(0);
}

И все заботится о фреймворке. Надеюсь, это решит вашу дилемму

0 голосов
/ 28 мая 2010

Я думаю, вам лучше использовать API JDBC. Из того, что вы описываете, две операции (выбрать внешний ключ из таблицы, вставить в таблицу_2) могут быть легко выполнены с помощью простого вызова хранимой процедуры.

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

0 голосов
/ 28 мая 2010

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

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

Единственные причины, по которым я выбрал бы простой JDBC, были бы:

  • очень сложный максимально оптимизированный SQL, который критичен к производительности;
  • Гибернация - глупость и неспособность выразить то, что я хочу;

И особенно, если вы говорите, что уже управляете другими объектами с помощью Hibernate, почему бы не сохранить свой код в одном стиле везде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...