2009-12-03 2 views
0

при использовании EHCache вместо того, чтобы определять, как утверждениеconfig ehcache.xml для jpa-объекта или аннотации?

<cache name="testonly.package.model.TestPOJOcategory" 
     maxElementsInMemory="200" 
     eternal="true" 
     overflowToDisk="false" 
     timeToIdleSeconds="300" 
     timeToLiveSeconds="600" 
    /> 

можно непосредственно определить внутри объекта независимо от любого кэша провайдера мы используем?

@Cache(
    type=CacheType.SOFT, 
    size=64000 
    expiry=36000000, 
    coordinationType=CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS 
) 

ссылка: http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching (он показал только EclipseLink, не EHCache)

ответ

4

Во-первых, даже если большинство JPA поставщиков инерционности (например, Hibernate, EclipseLink, ...) обеспечивают поддержку кэша второго уровня (ов), JPA 1.0 сделал не указать поддержку второго кэша уровня. Таким образом, при игре с кешем L2 вы фактически используете расширения JPA, которые не являются стандартными и не переносимы с одного провайдера на другой. Аннотации Hibernate @Cache не совпадают с аннотацией EclipseLink @Cache и не сопоставимы с аннотацией @DataCache от OpenJPA. Все они разные, они проприетарные. Если вы используете Hibernate (это мое понимание ваших предыдущих вопросов), вы не должны смотреть на собственные права EclipseLink (или только на вашу культуру, но этот вопрос выходит за рамки культуры, если можно).

Во-вторых, что заставляет вас думать, что аннотация EclipseLink @Cache имеет какое-либо отношение к EHCache? AFAIK, EclipseLink использует свой собственный cache implementation, который не связан с EHCache.

На самом деле, у меня такое ощущение, что вы немного потерялись здесь. Вы должны немного замедлить ход и сделать шаг за шагом: выбрать одно решение, придерживаться его, определить, что вам нужно делать, реализовывать вещи один за другим и получать всю работу. Сосредоточьтесь на своей цели, перестаньте собирать больше информации на данный момент, найдите время, чтобы переварить новые вещи, которые вы узнали.

+0

@Pascal, спасибо. очень оценен для вашего комментария – cometta

+1

Но xml config, предоставленный в вопросе, не понадобится в случае использования аннотаций. Единственной необходимой конфигурацией является настройка EhCache, а не тот, который использует кеш.Надеюсь, я уберу ваши сомнения. –

2

Насколько я знаю, в Hibernate есть что-то вроде этого,

@Entity 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class TestPOJOcategory { 
... 
} 

Это annotation имеет еще два атрибуты, region и include. Чтобы установить размер, истечение срока действия и все эти вещи, я ничего не знаю. Думаю, вы должны рассмотреть документы EhCache.

+0

Обязательно se config insie ehcache.xml с cometta

+1

Конечно, это то, что вы рассказываете в аннотации. Вы должны использовать один из них. Используя оба способа, xml config переопределяет аннотацию. –

+0

okie .. спасибо за упрощение. статья http://acupof.blogspot.com/2008/01/background-hibernate-comes-with-three.html ... упомянутая другая вещь, заявила она, оба должны указать @anotatino и настроить сущность внутри ehcache – cometta

Смежные вопросы