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

講述Hibernate Session緩存

開發 后端
這里介紹Hibernate Session緩存,Hibernate作為一種現在比較流行的輕量級的ORM框架,2003年開始在國內流行,到目前來說在做持久層上還是占有統治地位的。

在向大家詳細介紹Hibernate Session緩存之前,首先讓大家了解下Hibernate實體對象的三種狀態,然后全面介紹Hibernate Session緩存。

Hibernate作為一種現在比較流行的輕量級的ORM框架,2003年開始在國內流行,到目前來說在做持久層上還是占有統治地位的。雖然說豐富靈活的HQL和面對對象的Criteria查詢,把程序員從復雜繁瑣的JDBC中解放了出來,但作為持久層的框架,它的性能才是最重要的核心問題。而性能的核心在于緩存,由于最近在學習這些,所以就把自己的學到的一點東西拿來與大家分享,希望能起到拋磚引玉的效果。

在說這些之前的先說說Hibernate實體對象的三種狀態:

1.Transient:所謂Transient就是說實體對象在內存中自有存在,與數據庫中的記錄無關。

2.Persient:Persient對象對應數據庫中的一條記錄,也可以這樣理解,如果一個實體對象與某個session發生關聯,并處于對應session的有效期內,那它就處于Persient狀態。

3.Detached:所謂的Detached就是處于Persient狀態的對象對應的session關閉之后的狀態。

我們平時所說的PO(持久化對象)指的就是位于Persient狀態的對象,而VO(值對象)就是指Transient和Detached狀態的對象。

下面開始說CRUD保存:Hibernate中保存的方法很多我主要說說下面幾個:

1.save()方法,調用save方法時,首先會在Hibernate Session緩存中查找保存對象如果實體對象已經處于Persient狀態,直接返回,否在實行sql操作,并將保存的實體對象加入Hibernate Session緩存(save方法不會把實體加入二級緩存的),***對存在的級聯關系進行遞歸處理。

2.saveOrUpdate()方法:和save方法一樣首先在Hibernate Session緩存中查找,判斷對象是否為為保存狀態,如果對象處于Persient,不執行操作,處于Transient執行save操作,處于Detached調用save將對象與session重新關聯。

這里要注意的是批量操作時要適時對session進行flush操作避免OutOfMenoryError.刪除:刪除我主要說批量刪除,Hibernate在進行批量刪除前,首先必須將所有符合條件的數據加載到內存中(這是所有ORM框架必須面對的問題,這樣主要是為了對目前的內部緩存和二級緩存中數據進行整理,以保存和數據庫的一致性)這樣就面對這如果操作數據量過大,也會出現OutOfMenoryError,所以推薦使用迭代刪除。

修改:修改主要談談update方法,update和前面的save一樣首先還是要進行在內部緩存中查找,要注意兩點,

1.Persient狀態的實體對象調用update沒有任何作用,update的SQL將在session.flush()方法中執行。

查詢:查詢是受緩存影響***的,主要談一下以下幾種查詢1.load和get:這兩者的區別主要是load會在二級緩存中查找,而get在內部緩存中查找不到將跳過二級緩存直接進行sql操作。

2.createQuery()的list()和iterate()方法,list()實際上無法使用緩存的,他對緩存只寫不讀,而ierate則是首先查找所有符合條件的數據id(首先在本地緩存中查找)在執行相應的select獲得對應記錄,iterate方法的使用***是查找的實體對象在緩存已經存在,否則查詢性能較低,易產生N+1現象。

其實還有Query Cache但怕篇幅太長,讓人煩所以就就此停筆,其實緩存是一個很深問題,也很值得研究。

【編輯推薦】

  1. 簡單描述Hibernate單元測試
  2. 概括Hibernate多表關聯查詢
  3. 淺談Hibernate Session Factory
  4. 淺析Hibernate加載配置文件
  5. 深入剖析Hibernate核心接口
責任編輯:佚名 來源: IT168
相關推薦

2009-09-23 17:03:08

Hibernate S

2009-09-27 16:51:40

Hibernate U

2009-09-27 14:53:38

Hibernate S

2009-09-24 10:40:19

Hibernate核心

2009-09-25 10:00:47

Hibernate映射

2009-09-24 10:06:42

Hibernate實例

2009-09-28 10:14:08

Hibernate基礎

2009-09-25 12:59:52

Hibernate映射

2009-09-25 15:03:21

Hibernate綁定

2009-09-25 13:39:40

Hibernate屬性

2009-09-27 13:25:22

2009-09-29 16:04:29

Hibernate S

2009-09-24 17:24:20

Hibernate S

2009-09-25 09:46:03

Hibernate s

2009-09-25 10:53:40

Hibernate S

2009-09-22 10:09:21

Hibernate S

2009-06-29 08:48:41

Hibernate緩存

2009-09-23 17:18:16

Hibernate S

2009-06-12 16:00:13

Session方法Hibernate

2009-06-17 15:43:03

Hibernate緩存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜三级在线观看 | 亚洲在线 | 罗宾被扒开腿做同人网站 | 天天爽夜夜爽精品视频婷婷 | 久久夜夜| 国产精品国产精品国产专区不卡 | 在线免费观看亚洲 | 国产日韩欧美在线观看 | www.青青草 | 美女黄网 | 九九九视频在线 | 日韩av在线一区 | 久久大陆 | 国产成人影院 | 污污免费网站 | 精品国产欧美一区二区 | 日韩精品一区二区三区中文字幕 | 亚洲一区电影 | 九九久久免费视频 | 男人天堂网址 | 国产免费一区二区三区网站免费 | 欧美一级片在线看 | 337p日本欧洲亚洲大胆 | 欧美日韩国产一区二区三区不卡 | 羞羞视频网站免费观看 | 日本涩涩视频 | 国产视频日韩 | 日韩在线观看一区 | 国产精品久久 | 日韩一区二区视频 | 在线一区视频 | 免费看的黄网站 | 中文字幕 国产精品 | 国产亚洲成av人片在线观看桃 | 国产精品国产精品国产专区不卡 | 99久久精品免费看国产四区 | 色噜噜狠狠色综合中国 | 成人乱人乱一区二区三区软件 | 草久视频 | 国产成人在线视频播放 | 国产综合在线视频 |