緩存:是一種優(yōu)化的方式。將數(shù)據(jù)存入到內(nèi)存中,使用的時(shí)候直接從緩存中獲取,不通過存儲(chǔ)源。
hibernate框架中提供了優(yōu)化手段:緩存、抓取策略。hibernate提供了兩種緩存機(jī)制。
一級(jí)緩存:
Session級(jí)別的緩存,一級(jí)緩存的生命周期與Session的生命周期一致。一級(jí)緩存是自帶不可卸載的。緩存內(nèi)部就是結(jié)合Session接口和java集合構(gòu)成的。
特點(diǎn):
當(dāng)程序調(diào)用session接口的save(), update(), saveOrUpdate()時(shí),如果session緩存中沒有對(duì)象,hibernate就會(huì)自動(dòng)把數(shù)據(jù)庫中查詢到的數(shù)據(jù)加入到一級(jí)緩存中。
調(diào)用session接口的load(), get()方法,以及Query接口的list(), iteratir()方法時(shí),會(huì)判斷緩存中是否存在該對(duì)象,有則返回,沒有就再去查數(shù)據(jù)庫。
調(diào)用session接口的close()方法時(shí),緩存將清空。
二級(jí)緩存:用得少,不作要求。
一級(jí)緩存的內(nèi)部結(jié)構(gòu):
快照區(qū)(重要)
緩存區(qū)

image.png