Spring Data Jpa緩存介紹
阿新 • • 發佈:2017-05-10
級別 instance osc vid group 進程 config 詳細配置 oca
一級緩存:
會話session、事務級別的,事務退出,緩存就失效了。以id為標識
實體管理器-數據源 操作數據拷貝而非數據源。
二級緩存:
線程級或集群級,以id為標識放到緩存(針對id)
過程:一級緩存、二級緩存(進程級、可配置和修改)-數據源
多個線程訪問二級緩存,需要采取事務控制
橋接第三方緩存,hibernate二級緩存的實現:
1.ehcache
2.OScache
3.JBossCache
4.Memcached
......
什麽樣的數據適合二級緩存呢?
1.很少被修改的數據
2.不是很重要,允許偶爾出現並發的數據
3.不會被高並發訪問的數據
4.參數數據,通常是數量有限,極少被修改,大量的被其它實例引用的
不適合使用二級緩存?
1.經常被修改的數據,代價太大,得不償失
2.金錢敏感的數據,絕對不允許出現並發
3.與其他應用共享的數據
查詢緩存:
批量的緩存、批量的獲取,如按查詢條件、查詢結果進行緩存;
JPA+Ehcache緩存配置:
1.加入Ehcache依賴
<!--Ehcache-core 包 --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.6.9</version> </dependency> <!--添加Hibernate-Ehcache包 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernate-version}</version> </dependency>
2.配置ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"> <diskStore path="java.io.tmpdir/ehcache"/> <!-- 默認緩存 --> <defaultCache maxElementsInMemory="1000" <!-- 默認緩存中存最多數據項目 --> eternal="false" <!--是否永不過期--> timeToIdleSeconds="120" <!--空閑多長時間後從緩存中刪除--> timeToLiveSeconds="120" <!--活躍多長時間後從緩存中刪除--> overflowToDisk="false"/><!--超過maxElementsInMemory之後是否存儲到硬盤--> <!-- 題目緩存--> <cache name="questionCache" maxElementsInMemory="1000" eternal="true" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" memoryStoreEvictionPolicy="LRU" <!--數據項失效策略--> /> </ehcache>
3.persistence.xml配置加入緩存配置
<prop key="hibernate.cache.use_query_cache">true</prop> <!--開啟查詢緩存--> <property name="hibernate.cache.use_second_level_cache">true</property><!--開啟二級緩存--> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <!--ehcache支持--> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property><!--ehcache支持--> <property name="hibernate.cache.provider_configuration">classpath:ehcache.xml</property><!--ehcache詳細配置-->
4.註解配置
未完待續...
Spring Data Jpa緩存介紹