HIbernate 3.5.1 - могу ли я просто добавить EHCache 2.0.1? - PullRequest
4 голосов
/ 24 апреля 2010

Я использую Hibernate 3.5.1, который поставляется с EHCache 1.5 в комплекте.

Если я хочу использовать последнюю версию EHCache (2.0.1), это просто вопрос удаления ehcache-1.5.jar из моего проекта и замены на ehcache-core-2.0.1.jar? Есть какие-либо проблемы, о которых нужно знать?

Кроме того, является ли «область» кэша в файле отображения Hibernate такой же, как «имя» кэша в XML-файле конфигурации ehcache? То, что я хочу сделать, это определить 2 именованные области кэша - одну для справочных объектов, доступных только для чтения, которые не изменятся (списки поиска и т. Д.), И одну для всех других сущностей. Итак, в ehcache я хочу определить два элемента;

<cache name="readonly"> ... </cache>
<cache name="mutable"> ... </cache>

А затем в моих файлах отображения Hibernate я укажу кеш, который будет использоваться для каждой сущности:

<hibernate-mapping>
    <class name="lookuplist">
        <cache region="readonly" usage="read-only"/>
        <property> ... </property>
    </class>
</hibernate-mapping>

Будет ли это работать? Часть документации, по-видимому, подразумевает, что для каждого сопоставленного класса создается отдельный регион / кэш ...

Спасибо.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2010

Если я хочу использовать последнюю версию EHCache (2.0.1), это просто вопрос удаления ehcache-1.5.jar из моего проекта и замены на ehcache-core-2.0.1.jar? Есть ли какие-либо проблемы, о которых нужно знать?

В соответствии с документацией Ecache об использовании Ehcache в качестве Hibernate второго уровня кэша , вам придется использовать ehache-core.jar, но также и для изменения конфигурации Hibernate .

Кроме того - это «область» кэша в файле отображения Hibernate, которая совпадает с «именем» кэша в конфигурации ehcache xml?

Да. Опять же, обратитесь к документации, это объясняется в Настройка ehcache.xml .

Будет ли это работать? Часть документации, по-видимому, подразумевает, что для каждого сопоставленного класса создается отдельный регион / кэш

Документация не подразумевает, она написана черным по белому в Отображения кэша , что это по умолчанию:

region (optional: defaults to the class or collection role name): specifies the 
name of the second level cache region 

Будет ли это работать? Технически, да. Это хорошая идея? Я не уверен. В IMO предпочтительно иметь более мелкозернистые области как на уровне Hibernate, так и на уровне Ehcache (особенно если вы планируете использовать распределенное кэширование и стратегию аннулирования, вы, конечно, не хотите аннулировать все объекты). Я бы использовал настройки Hibernate по умолчанию.

0 голосов
/ 25 февраля 2013

У меня была такая же проблема, если вы используете Maven.

Лучше запретить загрузку ehcache в режиме гибернации и обеспечить вашу запись в ehcache.

т.е.

        <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.2.6.ga</version>
        <exclusions>
            <exclusion>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

таким образом он не будет загружать внутренний ehcache, в моем случае это была версия 1.2.3

, а затем положить

        <dependency>
        <groupId>net.sf</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>2.4.2</version>
    </dependency>

в вашем POM.xml

это должно работать.

...