jpa的一級和二級快取
一級快取:比如:
customer customer1 = entitymanager.find(customer.class, 1);
customer customer2 = entitymanager.find(customer.class, 1);
那麼,在查詢中,其實只查詢了,一次,因為第二次其實已經在一級快取中了
但是,customer customer1 = entitymanager.find(customer.class, 1);
transaction.commit();
entitymanager.close();
entitymanager = entitymanage***ctory.createentitymanager();
transaction = entitymanager.gettransaction();
transaction.begin();
customer customer2 = entitymanager.find(customer.class, 1);
這樣,就會查詢2次sql,因為他們在不同的entitymanager中。
二級快取,就是要在不同的entitymanager中,只查詢一次
這裡就需要使用到hibernate 的二級存在方法,需要ehcache,至少有4步,一步是加上jar並寫ehcache.xml,在src目錄下,另一步是配置hibernate:
其中:
配置二級快取的策略
all:所有的實體類都被快取
none:所有的實體類都不被快取.
enable_selective:標識 @cacheable(true) 註解的實體類將被快取
disable_selective:快取除標識 @cacheable(false) 以外的所有實體類
unspecified:預設值,jpa 產品預設值將被使用
第三步,在實體對映配置的後面加上
enable_selective
第四步,在實體類上加上類名之上,加上 @cacheable(true)
二級快取處理重新整理重複查詢問題:
@queryhints()
@query("from department d")
listgetall();
@transactional(readonly=true)
public listgetall()
public string input(mapmap)
mysql jpa快取 JPA高階二級快取
jpa高階二級快取 1.主鍵的分類 1.自然主鍵 沒有實際意義的主鍵 2.主鍵 主鍵的特徵 非空且唯一的 generatedvalue 預設為auto 主鍵的生成策略 jap標準的策略有四種 auto table sequence identity auto 自動選擇乙個最適合底層資料庫的主鍵生成策...
JPA學習筆記 二級快取
預設情況下開啟一級快取,如下 test public void testsecondlevelcache test public void testsecondlevelcache 下面配置二級快取 persistance.xml org.hibernate.ejb.hibernatepersist...
jpa 14 二級快取
在src 下增加乙個配置檔案 ehcache.xml 這個檔案直接拷貝來用即可了,不用理會裡面的內容。有須要的時候再研究也不遲 在 project etc目錄下拷貝過來 節點 若 jpa 實現支援二級快取,該節點可以配置在當前的持久化單元中是否啟用二級快取,可配置如下值 all 所有的實體類都被快取...