-
hibernate的緩存策略(ppt內(nèi)容)
1.什么是緩存?:并不是指計算機的內(nèi)存或者CPU的一二級緩存
緩存是指為了降低應用程序?qū)ξ锢頂?shù)據(jù)源訪問的頻次,從而提高應用程序的運行性能的一種策略
2.為什么使用緩存?
ORM框架訪問數(shù)據(jù)庫的效率直接影響應用程序的運行速度,提升和優(yōu)化ORM框架的執(zhí)行效率至關重要。
Hibernate的緩存是提升和優(yōu)化Hibernate執(zhí)行效率的重要手段,所有學會Hibernate緩存的使用和配置是優(yōu)化的關鍵。
3.緩存的工作原理
一級緩存
1.Hibernate一級緩存又稱為“Session緩存”、“會話級緩存”。
2.通過Session從數(shù)據(jù)庫查詢實體時會把實體在內(nèi)存中存儲起來,下一次查詢同一實體時不再從數(shù)據(jù)庫獲取,而從內(nèi)存中獲取,這就是緩存。
3.一級緩存的生命周期和Session相同;Session銷毀,它就銷毀。
4.一級緩存中的數(shù)據(jù)可適用范圍在當前會話之內(nèi)。
一級緩存的API的API
一級緩存無法取消,用二個方法管理。
evict():用于將某個對象從session的一級緩存中清除
clear():用于將一級緩存中的所有對象全部清除
用法:
一級緩存也有些時候會對程序的性能產(chǎn)生影響
二級緩存
二級緩存又稱為“全局緩存”、“應用級緩存”
二級緩存中的數(shù)據(jù)可適用范圍是當前應用的所有會話
二級緩存是可插拔式緩存,默認是EHCache,還支持其他二級緩存組件如:Hashtable、OSCache、SwarmCache、JBoss TreeCache等
二級緩存的配置步驟
1.添加二級緩存對應的jar包
ehcache.jar.zip
2.在hibernate的配置文件中添加Privider類的描述
3.添加二級緩存的屬性配置
hibernate.cfg.xml中
4.在需要被緩存的表所對應的映射文件中添加<cache/>標簽
<cache/>標簽的詳細介紹:
usage:指定緩存策略,可選的策略包括:transactional,read-write,nonstrict-read-write或read-only(只讀)
region:指定二級緩沖區(qū)域名
include:指定是否緩存延遲加載的對象;all,表示緩存所有對象;non-lazy,表示不緩存延遲加載的對象
總結:
在通常情況下會將具有以下特征的數(shù)據(jù)放入到二級緩存中
很少被修改的數(shù)據(jù)。
不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)。
不會被高并發(fā)訪問的數(shù)據(jù)。
參考數(shù)據(jù)。
Hibernate的緩存能提高檢索效率
Hibernate的緩存分為一級緩存和二級緩存。一級緩存是會話級緩存,二級緩存是應用級緩存。
Hibernate的緩存在提高檢索的同時,也會增加服務器的消耗,所有要注意緩存的使用策略。
查看全部 -
hibernate緩存策略的總結
查看全部 -
一二級緩存對比
查看全部 -
一級緩存的常用方法:
一級緩存無法取消,可以調(diào)用方法進行管理?
//evict方法清除一級緩存中的指定對象 session.evict(emp); //clear方法清空session中的所有內(nèi)容 session.clear();
Query?query?=?session.createQuery("from?Employee"); List?list?=?query.list();//不會使用session緩存,但是能夠產(chǎn)生緩存,每次都會到數(shù)據(jù)庫進行查詢 Iterator?iterator?=?query.iterator();//先查詢所有對象的主鍵ID,根據(jù)ID去 緩存中進行查詢,如果能夠查詢到直接返回,查詢不到則查詢數(shù)據(jù)庫
查看全部 -
一級緩存的生命周期和session相同
一級緩存的數(shù)據(jù)的適用范圍只能使用在當前會話之內(nèi)
查看全部 -
一級緩存也稱session緩存
同一個session進行兩次相同的查詢會默認使用緩存,即第二次查詢不會查詢數(shù)據(jù)庫,只發(fā)送一條sql語句,第二次查詢是直接從session緩存中獲取的
session緩存中,對持久化的每個實例都對應一個OID,當OID一致時,即不進行數(shù)據(jù)庫查詢,直接從緩存中獲取數(shù)據(jù)即可
不同的session即便查詢的是同一個實例,也會發(fā)出兩條sql語句
查看全部 -
緩存的工作原理
緩存是直接存儲在內(nèi)存當中,訪問速率比較高,當應用程序?qū)?shù)據(jù)進行訪問的時候,首先會查看緩存當中是否包含數(shù)據(jù),如果包含則直接調(diào)用,如果不包含,則再查詢數(shù)據(jù)庫;同時將查詢到的數(shù)據(jù)返回給應用程序,也會重新放到緩存當中,供下次查詢緩存使用
查看全部 -
hibernate一二級緩存的對比
查看全部 -
cache標簽的屬性配置
查看全部 -
二級緩存配置:
添加ehcache.jar、commons-logging.jar
在hibernate.cfg.xml中添加:
<property?name="cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
在實體類的.hbm.xml文件中配置cache標簽
查看全部 -
二級緩存應用
查看全部 -
一級緩存的API
查看全部 -
Hibernate一級緩存
查看全部 -
使用不同的Session對象分別查詢一次,兩次都會發(fā)送SQL語句
查看全部 -
同一個Session對象執(zhí)行兩次get方法,如果是同一條數(shù)據(jù),只會在第一次發(fā)送SQL語句,第二次直接在緩存中取。
查看全部
舉報