什麼是快取:
資料存到資料庫中,資料庫本身是乙個檔案系統,使用流方式操作檔案效率不是很高
(1)把資料存到記憶體裡面,就不需要使用流方式,可以直接讀取記憶體中的資料
(2)把資料存放到記憶體中去,可以提高讀取效率
hibernate快取
hibernate快取特點:
1、hibernate的一級快取
(1)hibernate的一級快取是預設開啟的
(2)hibernate的一級快取的範圍,就是session的範圍,從session建立到session關閉
(3)hibernate的一級快取中,儲存資料必須是 持久態資料
2、hibernate的二級快取
(1)替代技術:redis
驗證方式:
(1)首先根據uid=1查詢,返回乙個物件
(2)再根據uid=1查詢,再返回乙個物件
加入斷點除錯可知,只有在第一次執行session.get()方法時,才列印了sql語句,第二次session.get()方法執行時並沒有列印sql語句,而是查詢了一級快取,由此驗證了hibernate一級快取的存在
一級快取執行過程:
第一次查詢,首先先去查詢一級快取,發現沒有資料,再去查詢資料庫,返回user1物件(持久態物件),其次把user1物件的值放到一級快取中去
第二次查詢:首先查詢一級快取,發現有相同的資料,直接返回該資料的值,產生乙個新的user2物件,並沒有在資料庫中查詢
一級快取特性:持久態資料自動更新
user user = session.get(user.class,1);
user.setusername("test11");
不用去呼叫session.update()方法,也能起到更新資料庫的作用
一級快取區中還有一塊區域叫快照區(副本),會把一級快取區中的內容複製乙份到快照區中,user.setusername("test11");修改的是一級快取區中的內容,在最終事務提交的時候,也就是tx.commit()時,系統會比較一級快取區和快照區的資料是否相同,若不同,則把一級快取區中的資料(修改後的資料)更新到資料庫中去。
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 通過 手機號 字段找到...