Конфигурировать ehcache.xml для сущности jpa или использовать аннотацию? - PullRequest
0 голосов
/ 03 декабря 2009

при использовании ehcache вместо определения оператора типа

 <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)

Ответы [ 2 ]

4 голосов
/ 03 декабря 2009

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

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

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

2 голосов
/ 03 декабря 2009

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

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

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

...