㈠ 如何在JPA,Hibernate 和 Spring 中配置 Ehcache 緩存
<ehcache:annotation-driven />
<ehcache:config cache-manager="cacheManager">
<ehcache:evict-expired-elements
interval="李含陪60" />
</ehcache:config>
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml" />
</bean>
</beans>老困
需要緩存的對象在或service加上@Cacheable(cacheName="baseCache")
需要刪除更哪蠢新加上@TriggersRemove(cacheName="baseCache",removeAll=true)
㈡ JPA的幾個常用方法
1. persist():將臨時狀態的對象保存進資料庫。【插入一條新記錄】
//由於涉及資料庫增刪改,執行該語句前需啟用事務
entityManager.persist(modelObject);
2.merge():將對象存入資料庫,不同於persist(),merger()對於操作的對象,如果對象存在於資料庫則對對象進行修改,
如果對象在資料庫中不存在,則將該對象作為一條新記錄插入資料庫。
entityManager.merge(modelObject);
3.find()與getReference():查找對象。不同點:
當對象不存在時,find()返回null, getReference()會拋出javax.persistence.EntityNotFoundException異常
4.remove():將對象從資料庫中刪除。
entityManager.remove(entityManager.getReference(ModelObject.class,key));
5.refresh(Object obj):重新從資料庫中讀取數據。
6.contains(Object obj):判斷對象是否在資料庫中存在,返回true \ false。
7.flush():立即寫入資料庫。
執行persist()、merger()時,數據並不是立即寫入資料庫中,
而是由JPA緩存起來,在執行flush()時寫入。
在事務提交的時候,JPA會自動執行flush()一次性保存所有數據。
如果需要立即保存,可手動執行flush()。
setFlushModel():修改EntityManager的Flush模式。
EntityManager的Flush模式默認為FlushModel.AUTO,這種模式下,在執行查詢
(指使用JPQL語句查詢時,不包括find()和getReference()查詢)或事務提交時自動執行flush()。通過setFlushModel( FlushModel f )設置為FlushModel.COMMIT,該模式下只有在事務提交時才會執行flush()寫入資料庫。
㈢ spring data jpa lazy載入有緩存嗎
應該是沒緩存的,每次都會查表,要自己寫緩存,你可以把show sql開起來,就能看到執行幾次了。