Может кто-нибудь указать мне на некоторые ресурсы о сравнении производительности среди различных библиотек Query DSL, доступных для использования с Java, например: Querydsl , jOOQ , JEQUEL , activejdbc , iciql и т. Д. ..
Справочная информация: Я использую шаблон Spring JDBC, но для этого по-прежнему требовалось, чтобы запросы были записаны в формате простой строки. Хотя у меня нет проблем при написании прямых запросов, но меня беспокоит прямая зависимость от имен таблиц БД. Я не хочу использовать какие-либо рамки ORM, такие как Hibernate или JPA / EclipseLink. Мне нужна максимально высокая исходная производительность (IMO, они хороши для более ориентированных на CRUD приложений). Я могу позволить себе небольшие накладные расходы для этих DSL, только если это немного (я полагаю, это будут в основном конкатенации StringBuilder / String!)
Я рассмотрел использование именованных запросов, выведенных в некоторый xml. Но просто пытаюсь оценить значение, которое предоставляют разные библиотеки Query DSL.
Редактировать: больше по моему требованию:
Я хочу знать сравнение производительности между ними при построении умеренно сложного запроса с использованием их методов API. Все, что мне нужно, это сгенерировать строку запроса, используя любую из этих библиотек DSL, и передать ее в шаблон Spring JDBC. Итак, я хочу знать, если добавление этого промежуточного шага влечет за собой значительное снижение производительности, я хочу использовать именованные запросы или создать свою собственную библиотеку, которая просто использует StingBuilder или аналогичный подход
обновление мой опыт работы с jOOQ, iciql, QueryDSL:
Несмотря на то, что я упустил упомянуть об этом в своем первоначальном посте, я также заинтересован в простоте использования и накладных расходах, которые мне нужно иметь в моих классах сущностей (например, если требуются какие-либо дополнительные аннотации или реализации).
jOOQ:
- требует изменения свойств объекта в соответствии с библиотекой
- может вернуть строку SQL-запроса
Iciql:
- сущность может быть сопоставлена без изменений или с небольшими изменениями (может быть сопоставлена всего тремя способами)
- , но при этом он ограничивает только выбор запросов (для обновления / удаления / ... требуется повторное изменение сущности)
QueryDSL:
- несколько способов связать сущности с таблицей (кроме библиотечных, поддерживаются аннотации JPA). но нам нужно изменить сущности как минимум
- нет простого / прямого способа получить строку запроса
(все наблюдения с небольшим знанием, которые у меня есть по этим вопросам; если какие-либо из них неверны, пожалуйста, исправьте)
Учитывая все вышесказанное, я придерживаюсь написания именованных запросов :( Но, как кажется, ответ Лукаса Эдера объясняет мою первоначальную проблему с постом (производительность), я принял его.