-
一級,二級緩存的對比查看全部
-
二級緩存使用場景查看全部
-
二級緩存的介紹: 1.二級緩存又稱為“全局緩存”,“應用級緩存” 2.二級緩存中的數據可適用方位是當前應用的所有會話,不會雖然某一個session會話的關閉而關閉,而是隨著整個sessionFactory的關閉而關閉 3.二級緩存是可插拔式緩存,默認是EHCache,還支持其他二級緩存組件 二級緩存的適用場景: 1.很少被修改的數據 2.不是很重要的數據,允許出現偶爾并發的數據 3.不會被并發訪問的數據 4.參考數據 一二級緩存的對比: 如圖 總結: 1.Hibernate的緩存能提高檢索效率 2.Hibernate的緩存分為一級緩存和二級緩存,一級緩存是會話級緩存,二級緩存是應用級緩存 3.Hibernate的緩存在提高檢索的同時,也會增加服務器的消耗,所以要注意緩存的使用策略。查看全部
-
cache標簽的屬性查看全部
-
cache標簽的屬性: usage屬性(必備):表示事務模式,總共提供了4種:read-only、transactional、read-write、nonstrict-read-write include屬性:有兩個值,分別是all(全緩存)與non-lazy(不對該實體進行懶加載的屬性進行緩存). region屬性:該屬性值可以隨意命名,作用是在ehcache.xml配置文件中引用region屬性的值指定為該實體配置緩存策略. ehcache.xml配置文件中存在一個<defaultCache>標簽對,該標簽是默認的緩存策略. <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="1200" overflowToDisk="true" /> maxElementsInMemory屬性:表示緩存中允許創建的最大對象數. eternal屬性:表示緩存中的對象是否為永久的. timeToIdleSeconds屬性:表示緩存數據鈍化時間,即對象在它過期前的空閑時間(重啟服務器會鈍化). timeToLiveSeconds屬性:表示緩存數據生存時間. overflowToDisk屬性:表示溢出之后是否存儲在硬盤上. 配置文件的<cache>標簽的name屬性值與實體類的region屬性值對應.查看全部
-
Hibernate二級緩存 二級緩存的生命周期是SessionFactory,當SessionFactory關閉時,緩存才會清空. 二級緩存是每個session共用的緩存,并不是默認開啟的,需要手動去配置. 配置二級緩存的步驟: 1.添加二級緩存對應的jar包. jar包:commons-logging-1.1.3.jar、ehcache.jar 2.在Hibernate的配置文件中添加Provider類的描述(即添加二級緩存接口對應外部的實現類). <property name="cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property> 3.添加二級緩存的屬性配置文件,直接放在src根目錄即可. ehcache.xml 4.在需要被緩存的表所對應的映射文件中添加<cache/>標簽. 在<class>標簽下添加<cache usage="read-only"/> 雖然已經給Hibernate添加二級緩存,但是實體類并不是默認開啟二級緩存的,因此需要在被緩存的表所對應的映射文件中添加<cache/>標簽指明進行開啟.查看全部
-
二級緩存的配置步驟: 添加二級緩存對應的jar包:ehcache.jar commons-logging-1.1.3.jar 在Hibernate的配置文件中添加Provider類的描述,,如下: <!--指定二級緩存的外部實現類--> <property name="cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property> 添加二級緩存的屬性配置文件: ehcache.xml 在需要被緩存的表所對應的映射文件中添加<cache/>標簽,如下 <!--開啟二級緩存--> <cache usage="read-only"/>查看全部
-
一級緩存注意問題: 1.query.list()是不會使用一級緩存的。 2.【推薦】query.iterate()會使用一級緩存,當緩存中有數據的時候,query.iterate()將所有對象的id查詢出來然后到緩存中將所有對象都查詢出來,如果緩存中沒有數據,query.iterate()則把對象從數據庫中一條一條的將數據查出來。 一級緩存有時候也會對程序的性能產生影響. 因為在對數據進行增刪改操作時,同樣需要更新緩存中的數據. 即本來保存在緩存中的對象,當被更新后,同一個session再次訪問被更新后的對象時,就會重新發送sql語句獲取對象. 但總體上還是提升了查詢效率. 使用Query接口的list方法進行查詢數據時,不會使用到緩存. 即同一Query接口使用多次list方法對同一實體進行查詢時,會發送多次sql語句.但緩存中一樣會保留查詢的數據,只是list方法不會去緩存中查找數據. Hibernate的Query接口還提供使用Iterator迭代器進行查詢. 使用Query接口的iterator()方法返回包含該結果集的Iterator實例. 然后使用Iterator的hasNext()方法判斷是否還存在待遍歷對象. 使用Iterator的next()方法獲取當前遍歷的對象. Query query=session.createQuery("from Employee"); Iterator iterator=query.iterator(); while(iterator.hasNext()){ Employee emp=(Employee)iterator.next(); } 使用Iterator迭代器進行查詢時,會使用緩存. Iterator使用緩存步驟: 首先從數據庫查詢目標對象的id字段,然后根據id字段到緩存中查找數據,若緩存中存在該數據,則直接從緩存獲取,否則重新發送完整sql語句到數據庫中獲取數據.查看全部
-
Hibernate一級緩存的API查看全部
-
一、介紹一級緩存: 1.Hibernate一級緩存又稱為"Session緩存","會話級緩存" 2.通過Session從數據庫查詢實體時把實體在內存中存儲起來,下一次查詢同一實體時不再從數據庫獲取,而是從內存中獲取,這就是緩存 3.一級緩存的生命周期和Session相同;Session銷毀,他也銷毀 4.一級緩存中的數據可適用范圍在當前會話之內 二、Hibernate一級緩存API: 一級緩存是Hibernate的默認緩存,無法取消,用兩個方法管理: 1、evict():用于將某個對象從Session的一級緩存中清除。 2、clear():用于將一級緩存中的所有對象全部清除。查看全部
-
Hibernate的緩存與session有關查看全部
-
Hibernate緩存: 1.Hibernate緩存與session相關,同一個session第二次訪問同一個對象將使用緩存 2.在不同的session中多次查詢同一個對象時,會執行多次數據庫查詢 3.在一級緩存當中,持久化類的每個實例都具有唯一的OID,也就是說同一個session兩次查詢同一個對象時,第二次是不會再將對象保存在緩存當中的查看全部
-
緩存的工作原理查看全部
-
為什么使用緩存?查看全部
-
這里說的緩存并不是指計算機的內存或者CPU的一二級緩存。 緩存是指為了降低應用程序對物理數據源訪問的頻次,從而提高應用程序的運行性能的一種策略。查看全部
舉報
0/150
提交
取消