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


Автор: goodday1941 5.3.2009, 16:57
"шерстя" интернет по данному вопросу столкнулся с проблемой отсутствия информации...

ну информации по большому счету уйма ) но она вся не в тему...

смущают такие строки в примерах даошек, как:

Код

@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)

или
Код

q.setHint( "org.hibernate.cacheable", true ); 
   

ведь я хочу использовать JPA, значит аннотации должны быть JPAшные, а не хибернейтовсие... а если мне понадобится топЛинк, то мне что потом все аннотации править? смущает...

второе что смущает, это определение кешей по типу:

Код

    <cache name="com.test.Test"
           maxElementsInMemory="2000"
           eternal="false"
           timeToIdleSeconds="1800"
           timeToLiveSeconds="3600"
           overflowToDisk="false"
            />
 

то есть в данном случае кеш отвечает за кеширование сущностей Test. А как на счет List<Test>?

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

ПС.. когда я использовал эхкеш на одном из JDBCшных проектов я явно указывал аннотациями какие методы кешируются в какой кеш, и какие методы вызывают флаш у конкретного кеша

Автор: MisterCleric 6.3.2009, 18:34
Здравствуй.
Итак, поехали по очереди:
Цитата

@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)
или
q.setHint( "org.hibernate.cacheable", true ); 


В данном случае ты приводишь пример использования кеша второго уровня от Hibernate

Цитата

ведь я хочу использовать JPA, значит аннотации должны быть JPAшные, а не хибернейтовсие..


А никто не сказал, что сама спецификация JPA предоставляет кеш второго уровня

Цитата

а если мне понадобится топЛинк, то мне что потом все аннотации править? смущает...


Тогда и надо будет почитать как TopLink предоставляет кеш второго уровня.
Да и по-моему нету у него аннотаций... Все через XML-конфиги

Цитата

то есть в данном случае кеш отвечает за кеширование сущностей Test. А как на счет List<Test>?


в доках по Hibernate на писано, что для коллекций надо отдельно задавать риджены кеша.
Цитата

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


кеш влашеться или вручную или согласно указанным eviction policy.
При апдейте таблиц самим Hibernate я наблюдал, что происходит автоматическая репликация изменений в кеш при вызове коммита транзакции

Вроде бы ничего не пропустил...

Добавлено через 1 минуту и 24 секунды
приношу извинения за опечатки...  smile 

Автор: admin82 6.3.2009, 19:18
Цитата

Тогда и надо будет почитать как TopLink предоставляет кеш второго уровня.
Да и по-моему нету у него аннотаций... Все через XML-конфиги

Не смотрел TopLink, зато сдавал SCBCD. И согласно спеке по JPA аннотации обязательны, значит, и в TopLink  должны быть, иначе это уже не реализация JPA.

Автор: goodday1941 8.3.2009, 16:40
блин не нравится мне все это... скорее всего буду поднимать кэш как делал раньше(кеширование результатов методов с помощью ЭхКеш)


MisterCleric, может подскажите хороших ссылок по поводу настройки кеша? а то мои поиски в интернете не увенчались успехом smile

Автор: MisterCleric 10.3.2009, 11:38
Цитата

может подскажите хороших ссылок по поводу настройки кеша? а то мои поиски в интернете не увенчались успехом 


Здравствуй. По поводу настроек сказать конкретно ничего не могу. Я почитал документацию по Hibernate 2 level cache и понял, что мне подходит JbossCache так как это единственный транзакционный и реплицируемый кеш, который поддерживает Hibernate. 
Об остальных сказать ничего не могу, но предполагаю, что должно быть просто и для клиентского программиста прозрачно, так как от нас всего лишь требуется декларативно обозвать кешируемые свойства нашей модели, настроить конфиг кеша и усе. Все остальное делает API Hibernate.
EhCache - по-моему самый простой в настройке.

Автор: goodday1941 10.3.2009, 11:58
ладно буду листать офф сайт хибернейта

Добавлено через 30 секунд
Спасибо за ответы! 

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