hibernate快取學習

2021-08-17 07:00:13 字數 1099 閱讀 3069

hibernate的核心api就是hibernatesession,這個session是從factorysession獲取的,他控制著hibernate的所有

持久化的操作

hibernate的快取是分為兩級的,以及快取是乙個事務快取,是必須使用的,測試用例就是在乙個事務查詢兩次

同乙個語句,只會列印出一次sql語句,這個的前提是必須是同乙個sql,包括引數,格式,多乙個空格都是不行的

這裡深入了解一下,hibernate到底是怎麼控制一級快取的

快取都是乙個外掛程式,所以,我理解的控制原理應該是這樣,這個外掛程式應該是使用c語言進行編寫的,因為c語言畢竟

是和硬體互動最好的語言,以查詢為例,他會將你的查詢語句和查詢結構都放在放在使用c語言開闢的記憶體中,

當你使用同樣的查詢語句時,他就會去匹配在快取中被標記的語句,如果匹配不到,就去資料庫查詢,匹配到,

就將結果返回給你

二級快取,這個快取需要手動開啟,他主要是為了提供事務之間的快取訪問,那麼隨之而來的問題就是乙個併發

的問題,所以,hibernate提供了四種快取策略,當然,這四種策略肯定都有對應的實現,只要加入對應的jar包

就行了,這四種策略就是,事務型,就是只能有乙個事務來訪問我的快取,其實這種感覺沒有解決併發的問題,

多個事務或則執行緒同時訪問的時候是需要排隊的,讀寫型,這種就是支援併發了,但是你肯定就會讀取的到髒資料,

比如乙個更新,乙個查詢,我這更新還沒有完成,你就查出來了,那就不是最新的資料,非嚴格讀寫型,就是比上乙個

更好的餓實現併發,但是讀取到髒資料的可能性就大了,第四個就是唯讀型,這種就是只能是讀取資料,但是所有人

都能讀,最大程度的是實現了併發,

二級快取提供了兩種訪問策略,乙個是更具id查詢,乙個是根據query查詢,第乙個就是根據你的條件把所有字段

進行快取,如果你通過id再次查詢,就一查乙個準, 但是你給他其他的條件查詢,就軟蛋了,這就要用到另外一種

查詢策略,不能叫他一直這麼軟蛋啊,那就是將你的查詢語句和條件生成乙個key,然後和查詢出的資料關聯,如果

再次傳入相同的語句,就一查乙個準,這個和我猜測的一級快取的查詢策略是一致的,所以,hibernate自己實現了

一套用查詢語句和條件生成key的演算法.

Hibernate 快取 學習筆記

一.什麼是快取 快取是位於應用程式與物理資料來源之間,用於臨時存放複製資料的記憶體區域,目的是為了減少應用程式對物理資料來源訪問的次數,從而提高應用程式的執行效能.hibernate在查詢資料時,首先到快取中去查詢,如果找到就直接使用,找不到的時候就會從物理資料來源中檢索,所以,把頻繁使用的資料載入...

Hibernate學習筆記 快取

一級快取和二級快取和查詢快取 面試題 a 什麼是快取 b 什麼是一級快取,session級別的快取 c 什麼是二級快取,sessionfactory級別的快取,可以跨越session存在 i.經常被訪間 ii.改動不大不會經常改動 iii.數重有限 d 開啟二級快取 i.hibernate.cfg....

hibernate學習 快取機制

在之前的hibernate學習中,我們無論是curd,對單錶查詢還是檢索優化,我們好像都離不開session,session我們之間也簡單的說過,它是乙個快取,這一篇文章就就hibernate的快取進行一些介紹,我們將從以下幾點進行 一丶快取的分類 hibernate中快取分為一級快取和二級快取,像...