Как динамически изменять JPA 2.0 SQL / JPQL-запросы в работе - PullRequest
0 голосов
/ 08 сентября 2010

У меня проблема с архитектурой JPA 2.0 / ORM, в нашей производственной системе (и я верю во многие системы) нам нужна возможность динамического изменения SQL-запросов, потому что медленные запросы и ошибки в запросах, которые были обнаружены только в рабочей среде (большая нагрузка и большие данные), В результате мы использовали хранимые процедуры и вызываем их из iBatis.

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

В ORM / JPA 2.0 именованные запросы определены в коде, и программисту приходится улавливать проблемы с всей БД при разработке / QA - очень плохо!

Я видел в API, что платформа дает возможность определять собственные запросы, но в книгах / руководствах рекомендуется использовать именованные запросы ...

После того, как я прочитал SPEC Hibernate / JPA 2.0, чтобы посмотреть, есть ли решение этой проблемы, Я понимаю, что нет решения ...?

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

Был ли у вас шаблон проектирования / решение

Спасибо всем !!!

Uri.

Ответы [ 2 ]

4 голосов
/ 08 сентября 2010

Я бы посоветовал вам выполнить тестирование модулей и производительности перед развертыванием. Вы не должны узнавать о глючных или медленных запросах на этом позднем этапе.

JPA / ORM не похож на iBatis, как вы выяснили.

«Багги» звучит как отсутствие тщательного юнит-тестирования.

«Медленно» звучит так, будто ваши администраторы БД не проверяют SQL, сгенерированный JPA. ОБЪЯСНИТЕ ПЛАН на все это. У вас могут быть проблемы с индексированием или схемой на стороне базы данных, которые не решат никакие проблемы с JPA.

Шаблоны не являются решением.

0 голосов
/ 14 сентября 2010

Ваши сущности должны иметь возможность читать данные из представлений, а также из таблиц.Тогда sql для представления может быть изменен на лету.

...