一級(jí)緩存就是Session級(jí)別的緩存,一個(gè)Session做了一個(gè)查詢操作,它會(huì)把這個(gè)操作的結(jié)果放在一級(jí)緩存中,如果短時(shí)間內(nèi)這個(gè)session(一定要同一個(gè)session)又做了同一個(gè)操作,那么hibernate直接從一級(jí)緩存中拿,而不會(huì)再去連數(shù)據(jù)庫(kù),取數(shù)據(jù)。
二級(jí)緩存就是SessionFactory級(jí)別的緩存,顧名思義,就是查詢的時(shí)候會(huì)把查詢結(jié)果緩存到二級(jí)緩存中,如果同一個(gè)sessionFactory創(chuàng)建的某個(gè)session執(zhí)行了相同的操作,hibernate就會(huì)從二級(jí)緩存中拿結(jié)果,而不會(huì)再去連接數(shù)據(jù)庫(kù)。
緩存是介于應(yīng)用程序和物理數(shù)據(jù)源之間,其作用是為了降低應(yīng)用程序?qū)ξ锢頂?shù)據(jù)源訪問的頻次,從而提高了應(yīng)用的運(yùn)行性能。緩存內(nèi)的數(shù)據(jù)是對(duì)物理數(shù)據(jù)源中的數(shù)據(jù)的復(fù)制,應(yīng)用程序在運(yùn)行時(shí)從緩存讀寫數(shù)據(jù),在特定的時(shí)刻或事件會(huì)同步緩存和物理數(shù)據(jù)源的數(shù)據(jù)。
緩存的介質(zhì)一般是內(nèi)存,所以讀寫速度很快。但如果緩存中存放的數(shù)據(jù)量非常大時(shí),也會(huì)用硬盤作為緩存介質(zhì)。緩存的實(shí)現(xiàn)不僅僅要考慮存儲(chǔ)的介質(zhì),還要考慮到管理緩存的并發(fā)訪問和緩存數(shù)據(jù)的生命周期。