成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate臟數據與數據緩存

開發 后端
本文向您介紹Hibernate臟數據及其檢查方式,并對Hibernate數據緩存及緩存的實現方式做出介紹。

Hibernate臟數據檢查

何謂臟數據(Dirty Data)?

這里的"臟"可能有些誤解,臟數據并不是說非廢棄或者無用的數據,而是指一個數據對象所攜帶的信息發生了改變之后的狀態. 事務提交時,HIbernate會對Session中的PO進行檢測,判斷那些發生了變化,并裝發生變化的數據更新到數據庫中.

Hibernate臟數據的檢查一般策略大致有下面兩種:

數據對象監控

數據對象監控的實現方式,大體上是通過攔截器對數據對象的設值方法(setter)進行攔截,攔截器的實現可以借助Dynamic Proxy或者CGlib實現.一旦數據對象的設置方法被調用(通常這也意味著數據對象的內容發生變化),則將其標志為"待更新"狀態,之后在數據庫操作時將其更新到對應的庫表.

數據版本比較

在持久層框架中維持數據對象的最近讀取版本,當數據提交時數據與些版本進行比對 時,如果發生變化則將期同步到數據庫相應的庫Hibernate采取的是第二種檢查策略

Hibernate數據緩存

Hibernate數據緩存是數據庫數據在內存中的臨時容器,它包含了庫表數據在內存中的臨時拷貝,位于數據庫與數據訪問層之間,緩存(Cache)往往是提升系統性能的關鍵因素.

數據緩存策略

ORM數據緩存應包含以下幾個層次的內容:

◆事務級緩存(Transaction Layer Cache)

◆應用級/進程級緩存(Application/Process Layer Cache)

◆分布式緩存(Cluster Layer Cache)

事務級緩存

這里的事務可能是一個數據庫事務,也可能是某個應用級事務.對于Hibernate而言,事務級緩存是基于Session生命周期實現的.每個Session會在內部維持一個數據緩存,此緩存隨著Session的創建(銷毀)而存在(消亡),因此也叫Session Level Cache(也稱內部緩存)

應用級緩存

此緩存可由多個事務(數據事務或者應用級事務)共享,事務之間的緩存共享策略與應用的事務隔離機制密切相關.在Hibernate中,應用級緩存在SessionFactory層實現,所有由此SessionFactory創建的Session實例共享此緩存,因此也稱為SessionFactory Level Cache.

分布式緩存

分布式緩存由多個應用級緩存實例組成集群,通過某種遠程機制(如RMI或JMS)實現各個緩存實例間的數據同步,任何一個實例的數據修改操作,將導致整個集群間的數據狀態同步.

需要注意的是,如果當前的應用與其他應用共享數據庫,也就是說,在當前應用過程中,其他應用可能同時更新數據庫,那么緩存策略的制定就需要格外小心了,這種情況下,一般采取一些保守策略可能會更加穩妥.

Hibernate數據緩存

以Hibernate主義加以區分,Hibernate數據緩存可分為以下兩個層次:

◆內部緩存(Session Level,也稱一級緩存)

◆二級緩存(SessionFactory Level,也稱為二級緩存)

Hibernate中,緩存將在以下情況中發揮作用:

通過主鍵id加載數據.這包括根據id查詢數據的Session.load方法,以及Session.iterate等 批量查詢方法(Session.iterate進行查詢時,也是根據id在緩存 中查找數據,類似一個Session.load循環).

延遲加載

Session在內部維護了一個Map數據類型,些數據類型中保持了所有與當前Session相關聯對象. 內部緩存正常情況下由Hibernate自動維護,如果需要手動干預,我們可以通過以下方法完成:

◆Session.evict,將某個特定的對象從內部緩存中清除

◆Session.clear,清空內部緩存

二級緩存

在引入二級緩存時,應該考慮以下問題:

◆數據庫是否與其他應用共享

◆應用是否需要部署在集群環境中.

如果滿足以下條件,將納入緩存管理:

◆數據不會被第三方應用修改

◆數據大小(Data Size)在可接受的范圍之內.

◆數據更新頻率較低

◆同一數據可能會被系統頻繁引用.
 
◆非關鍵數據(關鍵數據,如金融帳戶數據)。

第三方緩存實現

Hibernate本身并未提供二級緩存的產品化實現,而是為眾多的第三方緩存組件提供了接入接口,較常用的第三方組件有:

1. JCS2. EHCache3. OSCache4. JBossCache5. SwarmCacheHibernate中啟用二級緩存,需要在hibernate.cfg.xml配置hibernate.cache.provider_class參數,之后,需要在映射文件中指定各個映射實體(以及collection)的緩存同步策略。Hibernate提供了一下4種內置的緩存同步策略:1. read-only只讀。對于不會發生改變的數據,可使用只讀型緩存。

2. nonstrict-read-write如果程序對并發訪問下的數據同步要求不是非常嚴格,且數據更新操作頻率較低,可以采用本選項,獲得較好的性能。

3. read-write嚴格可讀寫緩存。基于時間戳判定機制,實現了“read committed”事務隔離等級。可用于對數據同步要求嚴格的情況,但不支持分布式緩存。這也是實際應用中使用最多的同步策略。

 

【編輯推薦】

  1. Hibernate 刪除出現異常的解決方案
  2. 十五道Hibernate面試題及答案
  3. Hibernate優化方法解析
  4. Hibernate一對多關系的處理
  5. Struts與Hibernate的完美結合方案
責任編輯:佚名 來源: JavaEye
相關推薦

2009-09-28 09:47:55

Hibernate數據

2020-05-15 17:05:51

Oracle數據庫LRU算法

2019-12-24 10:32:01

OracleLRU臟塊

2009-06-29 08:48:41

Hibernate緩存

2009-06-17 15:52:23

Hibernate查詢

2009-06-17 15:43:03

Hibernate緩存

2009-09-23 17:03:08

Hibernate S

2012-02-03 11:31:33

HibernateJava

2009-09-25 13:51:13

Hibernate S

2009-09-25 10:25:54

Hibernate緩存

2009-09-29 14:03:14

Hibernate數據

2009-06-30 14:08:00

Hibernate緩存

2009-09-22 10:50:04

Hibernate c

2009-09-22 11:24:07

Hibernate查詢

2023-01-04 09:46:48

Linux磁盤緩存

2009-08-03 18:47:12

ASP.NET數據緩存

2023-08-11 09:00:00

2009-06-17 14:55:26

Hibernate數據

2009-09-23 09:37:07

Hibernate緩存

2009-06-18 14:51:12

Hibernate緩存Hibernate
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩中文字幕一区 | 视频精品一区 | 精品欧美激情精品一区 | 成人精品系列 | 一区二区三区免费在线观看 | 亚洲精品久久久久久国产精华液 | 日韩一区二区三区视频 | 福利视频大全 | 国产免费拔擦拔擦8x高清 | 一区二区三区回区在观看免费视频 | 一区二区三区在线免费观看 | 欧美亚洲视频 | 日本特黄特色aaa大片免费 | 国产精品久久久久av | 国产成人免费视频网站视频社区 | 欧美黄在线观看 | 亚洲精品福利在线 | 黄色在线播放视频 | 日本黄视频在线观看 | 国产精品久久二区 | 国产一区二区免费 | 午夜爱爱毛片xxxx视频免费看 | 国产激情免费视频 | 精品国产一区二区在线 | 国产精品日韩欧美一区二区三区 | 99久久婷婷国产综合精品 | 精品国产欧美一区二区三区成人 | 亚洲精品日韩精品 | 国产免费拔擦拔擦8x高清 | 羞羞视频免费在线 | 成人小视频在线观看 | 中文字幕高清av | 久热久热| 久久精品久久久 | 国产成人精品一区二区 | 黄色网页在线观看 | 中文字幕免费视频 | 色必久久 | 秋霞性生活 | www.久久久| 五月婷婷视频 |