對於hibernate 來說,一級快取由session提供並且只會存在記憶體當中。因此當對資料進行大批量操作時,操作不當可能會出現outofmemoryerror(記憶體溢位)異常,因此在對資料進行大批量操作時應注意以下幾點:
1)不要頻繁使用 session 的 flush,每進行一次flush ,hibernate 會將po資料與資料庫同步,對於海量資料操作來說,這簡直是效能災難。
2)及時清除不需要的一級快取資料,在進行大量的資料操作時,可以對資料進行分批操作,且每一次操作後清除記憶體。
3)使用hql的批量刪除語句
string hql = 「delete a where id in (:id)」;
query query = session.createquery(hql);
query.setparameterlist(「id」, s).executeupdate();
Hibernate 一級快取
1.session級別的快取,同session繫結,生命週期和session相同,當session銷毀,它也清除。管理以及快取的方法有clear evict clear清除session快取,evict將某個物件清除快取,相當於成為游離態detached。2.是實體級別的快取,只有在查詢物件級別的時...
Hibernate 一級快取
1.快取 hibernate中也存在快取.hibernate中存在的快取也是用來提高效率.2.hibernate中存在兩種快取 1 執行緒級別的快取.session快取 2 程序級別的快取.hibernate 二級快取 3.session快取 就是session物件中存在的快取.快取中存在的是 持久...
hibernate 一級快取
若 號碼中已經有這個號碼,那麼將它的擴充套件碼自動增加1,以保證每次傳送的 號碼加擴充套件碼組成唯一號碼 public synchronized void updateextcode string phonenumber throws exception 專案中一段邏輯是 1 通過 手機號 字段找到...