課程
/后端開發(fā)
/Java
/Hibernate緩存策略
二級(jí)緩存在開發(fā)項(xiàng)目中應(yīng)用多嗎?
2017-02-21
源自:Hibernate緩存策略 5-1
正在回答
1.什么是緩存?:并不是指計(jì)算機(jī)的內(nèi)存或者CPU的一二級(jí)緩存
緩存是指為了降低應(yīng)用程序?qū)ξ锢頂?shù)據(jù)源訪問(wèn)的頻次,從而提高應(yīng)用程序的運(yùn)行性能的一種策略
2.為什么使用緩存?
ORM框架訪問(wèn)數(shù)據(jù)庫(kù)的效率直接影響應(yīng)用程序的運(yùn)行速度,提升和優(yōu)化ORM框架的執(zhí)行效率至關(guān)重要。
Hibernate的緩存是提升和優(yōu)化Hibernate執(zhí)行效率的重要手段,所有學(xué)會(huì)Hibernate緩存的使用和配置是優(yōu)化的關(guān)鍵。
3.緩存的工作原理
1.Hibernate一級(jí)緩存又稱為“Session緩存”、“會(huì)話級(jí)緩存”。
2.通過(guò)Session從數(shù)據(jù)庫(kù)查詢實(shí)體時(shí)會(huì)把實(shí)體在內(nèi)存中存儲(chǔ)起來(lái),下一次查詢同一實(shí)體時(shí)不再?gòu)臄?shù)據(jù)庫(kù)獲取,而從內(nèi)存中獲取,這就是緩存。
3.一級(jí)緩存的生命周期和Session相同;Session銷毀,它就銷毀。
4.一級(jí)緩存中的數(shù)據(jù)可適用范圍在當(dāng)前會(huì)話之內(nèi)。
一級(jí)緩存無(wú)法取消,用二個(gè)方法管理。
evict():用于將某個(gè)對(duì)象從session的一級(jí)緩存中清除
clear():用于將一級(jí)緩存中的所有對(duì)象全部清除
用法:
一級(jí)緩存也有些時(shí)候會(huì)對(duì)程序的性能產(chǎn)生影響
二級(jí)緩存又稱為“全局緩存”、“應(yīng)用級(jí)緩存”
二級(jí)緩存中的數(shù)據(jù)可適用范圍是當(dāng)前應(yīng)用的所有會(huì)話
二級(jí)緩存是可插拔式緩存,默認(rèn)是EHCache,還支持其他二級(jí)緩存組件如:Hashtable、OSCache、SwarmCache、JBoss TreeCache等
1.添加二級(jí)緩存對(duì)應(yīng)的jar包
ehcache.jar.zip
2.在hibernate的配置文件中添加Privider類的描述
3.添加二級(jí)緩存的屬性配置
hibernate.cfg.xml中
4.在需要被緩存的表所對(duì)應(yīng)的映射文件中添加<cache/>標(biāo)簽
<cache/>標(biāo)簽的詳細(xì)介紹:
usage:指定緩存策略,可選的策略包括:transactional,read-write,nonstrict-read-write或read-only(只讀)
region:指定二級(jí)緩沖區(qū)域名
include:指定是否緩存延遲加載的對(duì)象;all,表示緩存所有對(duì)象;non-lazy,表示不緩存延遲加載的對(duì)象
在通常情況下會(huì)將具有以下特征的數(shù)據(jù)放入到二級(jí)緩存中
很少被修改的數(shù)據(jù)。
不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)。
不會(huì)被高并發(fā)訪問(wèn)的數(shù)據(jù)。
參考數(shù)據(jù)。
Hibernate的緩存能提高檢索效率
Hibernate的緩存分為一級(jí)緩存和二級(jí)緩存。一級(jí)緩存是會(huì)話級(jí)緩存,二級(jí)緩存是應(yīng)用級(jí)緩存。
Hibernate的緩存在提高檢索的同時(shí),也會(huì)增加服務(wù)器的消耗,所有要注意緩存的使用策略。
這位同學(xué)啊,這不好說(shuō)啊,因?yàn)樵趕pring中提供了hibernate相關(guān)的封裝,也能實(shí)現(xiàn)持久化數(shù)據(jù),在有些方面可能spring比hibernate的效果更好,況且這些框架也不是用了就一定好,用這些框架有時(shí)候也要謹(jǐn)慎,像前段時(shí)間的struts漏洞,就是一個(gè)例子,其實(shí)這個(gè)東西不能特定說(shuō)用的多不多,要看公司的業(yè)務(wù),以及東西對(duì)這些框架的偏愛,有的公司可能就用的比較多,但是有的公司就比較少
舉報(bào)
本教程主要介紹Hibernate中緩存的原理、分類和使用
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2019-06-18
hibernate的緩存策略
1.什么是緩存?:并不是指計(jì)算機(jī)的內(nèi)存或者CPU的一二級(jí)緩存
緩存是指為了降低應(yīng)用程序?qū)ξ锢頂?shù)據(jù)源訪問(wèn)的頻次,從而提高應(yīng)用程序的運(yùn)行性能的一種策略
2.為什么使用緩存?
ORM框架訪問(wèn)數(shù)據(jù)庫(kù)的效率直接影響應(yīng)用程序的運(yùn)行速度,提升和優(yōu)化ORM框架的執(zhí)行效率至關(guān)重要。
Hibernate的緩存是提升和優(yōu)化Hibernate執(zhí)行效率的重要手段,所有學(xué)會(huì)Hibernate緩存的使用和配置是優(yōu)化的關(guān)鍵。
3.緩存的工作原理
一級(jí)緩存
1.Hibernate一級(jí)緩存又稱為“Session緩存”、“會(huì)話級(jí)緩存”。
2.通過(guò)Session從數(shù)據(jù)庫(kù)查詢實(shí)體時(shí)會(huì)把實(shí)體在內(nèi)存中存儲(chǔ)起來(lái),下一次查詢同一實(shí)體時(shí)不再?gòu)臄?shù)據(jù)庫(kù)獲取,而從內(nèi)存中獲取,這就是緩存。
3.一級(jí)緩存的生命周期和Session相同;Session銷毀,它就銷毀。
4.一級(jí)緩存中的數(shù)據(jù)可適用范圍在當(dāng)前會(huì)話之內(nèi)。
一級(jí)緩存的API的API
一級(jí)緩存無(wú)法取消,用二個(gè)方法管理。
evict():用于將某個(gè)對(duì)象從session的一級(jí)緩存中清除
clear():用于將一級(jí)緩存中的所有對(duì)象全部清除
用法:
一級(jí)緩存也有些時(shí)候會(huì)對(duì)程序的性能產(chǎn)生影響
二級(jí)緩存
二級(jí)緩存又稱為“全局緩存”、“應(yīng)用級(jí)緩存”
二級(jí)緩存中的數(shù)據(jù)可適用范圍是當(dāng)前應(yīng)用的所有會(huì)話
二級(jí)緩存是可插拔式緩存,默認(rèn)是EHCache,還支持其他二級(jí)緩存組件如:Hashtable、OSCache、SwarmCache、JBoss TreeCache等
二級(jí)緩存的配置步驟
1.添加二級(jí)緩存對(duì)應(yīng)的jar包
ehcache.jar.zip
2.在hibernate的配置文件中添加Privider類的描述
3.添加二級(jí)緩存的屬性配置
hibernate.cfg.xml中
4.在需要被緩存的表所對(duì)應(yīng)的映射文件中添加<cache/>標(biāo)簽
<cache/>標(biāo)簽的詳細(xì)介紹:
usage:指定緩存策略,可選的策略包括:transactional,read-write,nonstrict-read-write或read-only(只讀)
region:指定二級(jí)緩沖區(qū)域名
include:指定是否緩存延遲加載的對(duì)象;all,表示緩存所有對(duì)象;non-lazy,表示不緩存延遲加載的對(duì)象
總結(jié):
在通常情況下會(huì)將具有以下特征的數(shù)據(jù)放入到二級(jí)緩存中
很少被修改的數(shù)據(jù)。
不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)。
不會(huì)被高并發(fā)訪問(wèn)的數(shù)據(jù)。
參考數(shù)據(jù)。
Hibernate的緩存能提高檢索效率
Hibernate的緩存分為一級(jí)緩存和二級(jí)緩存。一級(jí)緩存是會(huì)話級(jí)緩存,二級(jí)緩存是應(yīng)用級(jí)緩存。
Hibernate的緩存在提高檢索的同時(shí),也會(huì)增加服務(wù)器的消耗,所有要注意緩存的使用策略。
2017-03-05
這位同學(xué)啊,這不好說(shuō)啊,因?yàn)樵趕pring中提供了hibernate相關(guān)的封裝,也能實(shí)現(xiàn)持久化數(shù)據(jù),在有些方面可能spring比hibernate的效果更好,況且這些框架也不是用了就一定好,用這些框架有時(shí)候也要謹(jǐn)慎,像前段時(shí)間的struts漏洞,就是一個(gè)例子,其實(shí)這個(gè)東西不能特定說(shuō)用的多不多,要看公司的業(yè)務(wù),以及東西對(duì)這些框架的偏愛,有的公司可能就用的比較多,但是有的公司就比較少