Весна: спящий + ehcache - PullRequest
9 голосов
/ 11 марта 2011

Я работаю с весенним проектом, использующим hibernate, и надеюсь внедрить кэш второго уровня, используя ehcache.Я вижу несколько подходов к этому:

  1. spring-modules-cache, который вводит аннотацию @Cacheable

  2. ehcache-spring-annotations набор инструментов, который стремится стать преемником spring-modules-cache.

  3. Hibernate cache прекрасно интегрируется в саму Hibernate для выполнения кэширования с использованием, например, аннотации @Cache.

  4. Programmatic cache с использованием прокси.Конфигурация, основанная на аннотациях, быстро становится либо ограниченной, либо сложной (например, несколько уровней вложенности аннотаций)более активно развивается ehcache-spring-annotations.Hibernate cache хотя кажется наиболее полной реализацией (например, как чтение, так и запись в кеш и т. Д.).

    Что мотивирует использовать набор инструментов?Пожалуйста, поделитесь своим опытом кеширования ...

Ответы [ 2 ]

9 голосов
/ 11 марта 2011

В нашем проекте используется вариант 3. Мы применяем аннотацию org.hibernate.annotations.Cache к объектам, которые мы кэшируем в Ehcache , настраиваем Ehcache с использованием ehcache.xml, а также включаем и настраиваем кэш второго уровня Hibernate в hibernate.cfg.xml:

    <!-- Enable the second-level cache  -->
    <property name="hibernate.cache.provider_class">
        net.sf.ehcache.hibernate.EhCacheProvider
    </property>
    <property name="hibernate.cache.region.factory_class">
        net.sf.ehcache.hibernate.EhCacheRegionFactory
    </property>
    <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.use_structured_entries">true</property>     
    <property name="hibernate.cache.generate_statistics">true</property>

Для большинства объектов мы используем стратегию параллельного использования кэша CacheConcurrencyStrategy.TRANSACTIONAL:

@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)

В нашем проекте Maven используются Hibernate 3.3.2GA и Ehcache 2.2.0:

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.3.2.GA</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>3.3.0.ga</version>
        <exclusions>
            <exclusion>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.2.1.ga</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>ejb3-persistence</artifactId>
        <version>3.3.2.Beta1</version>
    </dependency>
3 голосов
/ 11 марта 2011

Spring 3.1 имеет новую встроенную кэш-абстракцию. Читайте здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...