一、定義
hibernate是一個(gè)使用較為廣泛的ORM框架娜扇,主要原理是經(jīng)過配置文件完成entry的屬性對(duì)表的column之間的一一映射沛鸵。
hibernate的一級(jí)緩存:Session的緩存。
hibernate的二級(jí)緩存:SessionFactory的外置緩存宇植。
這兩個(gè)緩存都是位于持久層(Dao)他們存放的都是數(shù)據(jù)庫的數(shù)據(jù)備份怠苔。
二同廉、session緩存的作用
1、減少數(shù)據(jù)庫的訪問頻率柑司,提高訪問性能恤溶。
2、保證緩存中的數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù)的一致性帜羊。(緩存中的對(duì)象叫做持久化對(duì)象,快照機(jī)制可以檢查緩存對(duì)象是否是最新數(shù)據(jù))鸠天。
3讼育、對(duì)象之間存在級(jí)聯(lián)關(guān)系時(shí)保證不會(huì)出現(xiàn)對(duì)象圖的死鎖。
三稠集、緩存使用
(1)session緩存的使用
當(dāng)進(jìn)行查詢滿足條件的數(shù)據(jù)時(shí)奶段,需要的是首先查詢一次list()------>從list中遍歷出符合條件的(操作內(nèi)存的速度比表的速度快的多,所以在很多分庫分表場(chǎng)景中都是將數(shù)據(jù)放到內(nèi)存中再去遍歷查找(如:京東))剥纷。
當(dāng)session.close()執(zhí)行后session被關(guān)閉痹籍,一級(jí)緩存被關(guān)閉此時(shí)如果需要再次操作就需要使用二級(jí)緩存。
(2)sessionFactory的使用
配置二級(jí)緩存:1晦鞋、hibernate并沒有提供相應(yīng)的二級(jí)緩存的組建蹲缠,所以需要加入額外的二級(jí)緩存包,常用的二級(jí)緩存包EHcache悠垛。包位置:hibernate--->lib----->optional--->ehcache下可以找到线定。
? ? ? ? ? ? ? ? ? ? ? ? ?2、在hibernate.cfg配置文件中配置我們的二級(jí)緩存的一些屬性:(相關(guān)屬性配置到<sessionFactory>標(biāo)簽內(nèi))
? ? ? ? ? ?3确买、對(duì)應(yīng)的二級(jí)緩存ehcache.xml的配置
4斤讥、在對(duì)應(yīng)的實(shí)體類種開啟二級(jí)緩存
5、sessionFactory使用案例:注(二期緩存只是緩存的對(duì)象)
(3)三級(jí)緩存(又稱查詢緩存)注(查詢緩存也是sessionFactory級(jí)別的緩存)
1湾趾、添加對(duì)應(yīng)的查詢緩存配置
2芭商、查詢緩存使用(針對(duì)HQL):使用時(shí)HQL查詢語句完全相同派草,參數(shù)設(shè)置完全相同,此時(shí)緩存才可以生效铛楣。