Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JPA, кеш, хранимые процедуры


Автор: Feldsher 30.1.2013, 13:29
Ребята, подскажите пожалуйста, кешируются ли результат выполнения хранимой процедуры через NativeQuery?

Код

call select_items(3,5,7);



Если нет - как вызывать процедуры с кешированием результатов?


Заранее спасибо.,

Автор: mbasil 31.1.2013, 08:50
Скорее всего результат выполнения хранимой процедуры, вызванной через NativeQuery НЕ кэшируется. в контексте постоянства, так как разработчики JPA презираеют хранимые процедуры и считают, что их вообще нет.
1. Если вы используете Oracle 11g, результаты вызова детерминированных процедур можно кэшировать средствами базы.
2. В противном случае можно создать класс, который JPA будет считать Entity и сунуть туда резульатат вызова процедуры. Сущность будет кэшироваться, а с ней и результат, но это "обходный маневр". Например, в Oracle 11g можно создавать столбцы таблицы, которые на самом деле не являются столбцами а лишь вычислимыми выражениями.

Добавлено через 4 минуты и 7 секунд
А вообще, что вам мешает вызывать хранимую процедуру не через JPA, поскольку это вообще изврат (в силу отношения разработчиков), а через JDBC напрямую и написать простой кэш самому. 

Автор: Feldsher 13.5.2013, 15:32
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)