Платформы ORM, используемые только для вставки / запросов только приложений - PullRequest
1 голос
/ 18 января 2012

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

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

Это правильный вызов?или как я могу убедить их использовать Hibernate, кроме "его моей любимой платформы orm"?Или есть даже другие решения, которые не были приняты во внимание?

Ответы [ 4 ]

4 голосов
/ 18 января 2012

Отказ от ответственности: я создатель jOOQ и, таким образом, этот ответ слегка смещен.

jOOQ был разработан специально для случая использования, упомянутого вашими коллегами. В вашем проекте вы делаете не OLTP (CRUD), а OLAP , что во многих отношениях является очень хорошим примером использования jOOQ. jOOQ рекомендует использовать функции OLAP, такие как оконные функции, сводные таблицы, рекурсивные запросы, хранимые процедуры, массивы и неопубликованные массивы и т. д. jOOQ также поддерживает 13 различных баз данных со всеми тонкостями совместимости SQL, которых вы хотите избежать. Некоторые примеры:

  • Как соотношения LIMIT .. OFFSET / TOP .. START AT и т. Д. Отображаются в базе данных?
  • Как связаны переменные (с или без приведения)?
  • Как поддерживаются встроенные функции?
  • Нужно ли заключать производные таблицы в скобки?

Все эти аспекты совместимости также очень хорошо охвачены Hibernate . Итак, ваш вопрос сводится к этому:

  • Хотите ли вы использовать Hibernate, который не является идеальным выбором технологии, но который вы хорошо знаете и, таким образом, можете оценить риски? Это тот путь, если все в команде знают и любят Hibernate, и у них мало времени, чтобы изучать новые вещи.

  • Или вы хотите использовать другую структуру, которая может быть более подходящей, но вы не знаете ее хорошо и, следовательно, не можете оценить все риски? Это может быть путь, если вы единственный, кто поддерживает Hibernate, и у вас есть время, чтобы изучить новые фреймворки. Другие рамки, которые вы могли бы рассмотреть:

  • Или вы можете смешивать технологии и использовать Hibernate для более простых запросов и простой SQL / jOOQ / Spring / myBATIS / и т.д. для более сложных.

  • Или вы можете выполнять массовую обработку и запросы OLAP с помощью хранимых процедур (например, в PL / SQL, если вы используете Oracle) и позволить базе данных выполнять работу? Это может быть хорошим способом, если в вашей команде есть хороший администратор баз данных или специалист по базам данных.

Нет правильного или неправильного ответа. Но вам придется принять прагматичное решение.

1 голос
/ 18 января 2012

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

Любой аргумент в пользу предпочтения Hibernate над JooQ будет одним из способов, которым приложение концептуализирует данные. Hibernate абстрагирует представление строк данных в объекты. Некоторым программистам это не нравится, и они предпочитают делать это вручную. Это может быть причиной того, что они хотят использовать JooQ, поэтому вам нужно поговорить с ними о структуре приложения.

1 голос
/ 18 января 2012

sormula - это готовая к CRUD ORM.Вы можете смешать JDBC с сормулой.Он не выполняет массовую вставку, но имеет insertAll (java.util.Collection) для вставки коллекции объектов.

1 голос
/ 18 января 2012

Hibernate - это объектно-реляционное отображение.Если они выполняют только массовые вставки и создают отчеты по необработанным потокам данных, возможно, им не нужно никакого представления объектов.Hibernate пригодится, если им понадобится какое-то объектное представление своих данных.

...