2014-12-08 3 views
2

Мне нужно несколько объектов pojo в моем приложении, поэтому я хочу знать, как включить Second Level Cache. До сих пор по умолчанию включен кеш первого уровня, я также хотел бы узнать, какие преимущества и недостатки кэша второго уровня существуют.Как включить кеш второго уровня в Hibernate

+0

http://stackoverflow.com/questions/1216630/hibernate-second-level-cache-net-sf-ehcache-hibernate-ehcacheprovider или http://stackoverflow.com/questions/20584585/hibernate-second-level -cache-example – StanislavL

+0

Возможный дубликат-http: //stackoverflow.com/questions/27358121/how-to-enable-second-level-cache-in-hibernate –

+1

просто google it! – iozee

ответ

0

Это то, что вам нужно сделать:

  1. Установите следующие свойства Hibernate:

    <property name="hibernate.cache.use_second_level_cache">true</property> 
    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> 
    
  2. Добавить ehcache.xml файл в пути к классам, содержащий записи конфигурации кэша:

    <cache name="com.mycompany.MyEntity" 
        maxElementsInMemory="50" 
        eternal="true" 
        overflowToDisk="false" 
        timeToIdleSeconds="600" 
        timeToLiveSeconds="600" 
        diskPersistent="false" 
        memoryStoreEvictionPolicy="LRU"  
    /> 
    
  3. Определите тип кэширования для каждого объекта:

    @Entity 
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 
    public class MyEntity { 
         ... 
    } 
    
0

кэша второго уровня был введен в спящем 3.0

Если когда-нибудь мы загружаем любой объект из базы данных, а затем зимует проверить, имеется ли в локальной кэш-памяти конкретный сеанс [означает, что объект кеш первого уровня], если недоступно , тогда hibernate проверяет, доступен ли объект в глобальном кеше или заводской кеш [кеш второго уровня], если он недоступен, то hibernate попадет в базу данных и загрузит объект оттуда, а затем первые хранилища в локальном кэше сессии [первый уровень] затем в глобальном кэше [кэш второго уровня]

Если когда-нибудь мы загружаем любой объект из базы данных, а затем зимует проверить, имеется ли в локальной кэш-памяти конкретный сеанс, что объект [означает кеш первого уровня], если он недоступен , тогда hibernate проверяет, доступен ли объект в глобальном кеше или заводской кеш [кеш второго уровня], если он недоступен, тогда hibernate попадет в базу данных и загрузит объект оттуда; затем сначала хранятся в локальном кэше сеанса [первый уровень] , затем в глобальном кеше [кеш второго уровня]

0
кэш

JPA L2 включен, настраиваются с помощью свойства сохраняемости

javax.persistence.sharedCache.mode

, который имеет значение NONE | ВСЕ | ENABLE_SELECTIVE | DISABLE_SELECTIVE | НЕОПРЕДЕЛЕННЫЕ. Использование этого свойства является общим для ВСЕХ действительных реализаций JPA.

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