hibernate 一級快取和批量刪除

2021-10-08 19:29:05 字數 442 閱讀 2932

對於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 通過 手機號 字段找到...