-
hibernate的緩存策略(ppt內容)
1.什么是緩存?:并不是指計算機的內存或者CPU的一二級緩存
緩存是指為了降低應用程序對物理數據源訪問的頻次,從而提高應用程序的運行性能的一種策略
2.為什么使用緩存?
ORM框架訪問數據庫的效率直接影響應用程序的運行速度,提升和優化ORM框架的執行效率至關重要。
Hibernate的緩存是提升和優化Hibernate執行效率的重要手段,所有學會Hibernate緩存的使用和配置是優化的關鍵。
3.緩存的工作原理
一級緩存
1.Hibernate一級緩存又稱為“Session緩存”、“會話級緩存”。
2.通過Session從數據庫查詢實體時會把實體在內存中存儲起來,下一次查詢同一實體時不再從數據庫獲取,而從內存中獲取,這就是緩存。
3.一級緩存的生命周期和Session相同;Session銷毀,它就銷毀。
4.一級緩存中的數據可適用范圍在當前會話之內。
一級緩存的API的API
一級緩存無法取消,用二個方法管理。
evict():用于將某個對象從session的一級緩存中清除
clear():用于將一級緩存中的所有對象全部清除
用法:
一級緩存也有些時候會對程序的性能產生影響
二級緩存
二級緩存又稱為“全局緩存”、“應用級緩存”
二級緩存中的數據可適用范圍是當前應用的所有會話
二級緩存是可插拔式緩存,默認是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:指定二級緩沖區域名
include:指定是否緩存延遲加載的對象;all,表示緩存所有對象;non-lazy,表示不緩存延遲加載的對象
總結:
在通常情況下會將具有以下特征的數據放入到二級緩存中
很少被修改的數據。
不是很重要的數據,允許出現偶爾并發的數據。
不會被高并發訪問的數據。
參考數據。
Hibernate的緩存能提高檢索效率
Hibernate的緩存分為一級緩存和二級緩存。一級緩存是會話級緩存,二級緩存是應用級緩存。
Hibernate的緩存在提高檢索的同時,也會增加服務器的消耗,所有要注意緩存的使用策略。
查看全部 -
hibernate緩存策略的總結
查看全部 -
一二級緩存對比
查看全部 -
一級緩存的常用方法:
一級緩存無法取消,可以調用方法進行管理?
//evict方法清除一級緩存中的指定對象 session.evict(emp); //clear方法清空session中的所有內容 session.clear();
Query?query?=?session.createQuery("from?Employee"); List?list?=?query.list();//不會使用session緩存,但是能夠產生緩存,每次都會到數據庫進行查詢 Iterator?iterator?=?query.iterator();//先查詢所有對象的主鍵ID,根據ID去 緩存中進行查詢,如果能夠查詢到直接返回,查詢不到則查詢數據庫
查看全部 -
一級緩存的生命周期和session相同
一級緩存的數據的適用范圍只能使用在當前會話之內
查看全部 -
一級緩存也稱session緩存
同一個session進行兩次相同的查詢會默認使用緩存,即第二次查詢不會查詢數據庫,只發送一條sql語句,第二次查詢是直接從session緩存中獲取的
session緩存中,對持久化的每個實例都對應一個OID,當OID一致時,即不進行數據庫查詢,直接從緩存中獲取數據即可
不同的session即便查詢的是同一個實例,也會發出兩條sql語句
查看全部 -
緩存的工作原理
緩存是直接存儲在內存當中,訪問速率比較高,當應用程序對數據進行訪問的時候,首先會查看緩存當中是否包含數據,如果包含則直接調用,如果不包含,則再查詢數據庫;同時將查詢到的數據返回給應用程序,也會重新放到緩存當中,供下次查詢緩存使用
查看全部 -
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對象分別查詢一次,兩次都會發送SQL語句
查看全部 -
同一個Session對象執行兩次get方法,如果是同一條數據,只會在第一次發送SQL語句,第二次直接在緩存中取。
查看全部
舉報