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

Hibernate基礎(chǔ)全面介紹

開發(fā) 后端
這里介紹Hibernate基礎(chǔ),包括介紹Hibernate提供了一種用數(shù)據(jù)庫表刷新(refresh)持久對象的機(jī)制.使用Session接口的refresh()方法的其中之一刷新持久對象的實例.

在向大家詳細(xì)介紹Hibernate之前,首先讓大家了解下Hibernate基礎(chǔ),然后全面介紹get和load有兩個重要區(qū)別。

Hibernate基礎(chǔ)之關(guān)聯(lián)
單向關(guān)聯(lián): 單向關(guān)聯(lián)沒有inverse用法
◆雙向關(guān)聯(lián): 使用inverse來指定.inverse=false(默認(rèn)值)表示自己是關(guān)聯(lián)的擁有者,Inverse=true表示另一端是關(guān)聯(lián)的擁有者.

如何管理雙向關(guān)聯(lián)?

必須顯示地管理關(guān)聯(lián)的兩端對一端進(jìn)行了修改,兩端都要重新設(shè)置,要保持同步.如何決定關(guān)聯(lián)的擁有者(一般來說,擁有外鍵的一端就是關(guān)聯(lián)的擁有者?????)
◆一對一: 任何一端都可以作為關(guān)聯(lián)的擁有者.但是應(yīng)該選擇其中之一(而且只 能選擇一個).----如果沒有指定擁有者,就會導(dǎo)致循環(huán)依賴.
◆一對多: “多”端必須作為關(guān)聯(lián)的擁有者.(一般都是多端擁有外鍵???)
◆多對一: “多”端必須作為關(guān)聯(lián)的擁有者. (一般都是多端擁有外鍵???)
◆多對多: 任何一端都可以作為關(guān)聯(lián)的擁有者.

Hibernate基礎(chǔ)之saveOrupdate()使用

保存已經(jīng)持久化的對象是不合適的,同樣,更新瞬時對象也不合適的.如果從應(yīng)用程序代碼判斷對象的狀態(tài)是不可能的,或者不方便,那么可以使用saveOrUpdate()方法.

Hibernate基礎(chǔ)之load()與get()

  1. public Object load(Class theClass, Serializable id) throws HibernateException  
  2. public Object load(String entityName, Serializable id) throws HibernateException  
  3. public Object get(Class clazz , Serializable id) throws HibernateException  
  4. public Object get(String entityName, Serializable id )thtows HibernateException 

Hibernate中g(shù)et方法和load方法的根本區(qū)別在于:

1.對于get方法,Hibernate會確認(rèn)一下該id對應(yīng)的數(shù)據(jù)是否存在,首先在session緩存中查找,然后在二級緩存中查找,還沒有就查詢數(shù)據(jù)庫,數(shù)據(jù)庫中沒有就返回null。

2.load方法加載實體對象的時候,根據(jù)映射文件上class級別的lazy屬性的配置(默認(rèn)為true),分情況討論:
◆若為true,則首先在Session緩存中查找,看看該id對應(yīng)的對象是否存在,不存在則使用延遲加載,返回實體的代理類對象(該代理類為實體類的子類,由CGLIB動態(tài)生成)。等到具體使用該對象的時候, 再查詢二級緩存和數(shù)據(jù)庫,若仍沒發(fā)現(xiàn)符合條件的記錄,則會拋出一個ObjectNotFoundException。
◆若為false,就跟get方法查找順序一樣,只是最終若沒發(fā)現(xiàn)符合條件的記錄,則會拋出一個ObjectNotFoundException。

這里get和load有兩個重要區(qū)別:
如果未能發(fā)現(xiàn)符合條件的記錄,get方法返回null,而load方法會拋出一個ObjectNotFoundException。load方法可返回沒有加載實體數(shù)據(jù)的代理類實例,而get方法永遠(yuǎn)返回有實體數(shù)據(jù)的對象。(對于load和get方法返回類型:好多書中都說:“get方法永遠(yuǎn)只返回實體類”,實際上并不正確,get方法如果在session緩存中找到了該id對應(yīng)的對象,如果剛好該對象前面是被代理過的,如被load方法使用過,或者被其他關(guān)聯(lián)對象延遲加載過,那么返回的還是原先的代理對象,而不是實體類對象,如果該代理對象還沒有加載實體數(shù)據(jù)(就是id以外的其他屬性數(shù)據(jù)),那么它會查詢二級緩存或者數(shù)據(jù)庫來加載數(shù)據(jù),但是返回的還是代理對象,只不過已經(jīng)加載了實體數(shù)據(jù)。)

Hibernate基礎(chǔ)之刷新實體

Hibernate提供了一種用數(shù)據(jù)庫表刷新(refresh)持久對象的機(jī)制.使用Session接口的refresh()方法的其中之一刷新持久對象的實例.

  1. Public void refresh(Object object) throws HibernateException 

【編輯推薦】

  1. 講解NHibernate Session
  2. 簡單描述Hibernate Sample
  3. Hibernate Annotations維護(hù)驗證邏輯
  4. Hibernate ClassValidator實例
  5. 描述Hibernate持久性類
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-09-28 13:49:44

Hibernate Q

2009-09-23 17:41:05

Hibernate事務(wù)

2009-09-25 09:46:03

Hibernate s

2009-09-22 09:27:29

Hibernate P

2009-09-25 17:19:28

Hibernate持久

2009-08-11 15:17:12

C#基礎(chǔ)知識

2009-09-21 16:56:14

Hibernateibatis

2009-09-28 17:27:27

Hibernate A

2009-09-25 16:27:33

Hibernate S

2009-09-28 16:54:34

Hibernate示例

2009-09-23 15:50:21

Hibernate u

2009-09-24 10:50:31

Hibernate主鍵

2009-09-29 10:12:03

Hibernate A

2009-09-22 11:24:07

Hibernate查詢

2009-09-22 15:22:08

Hibernate性能

2009-09-21 17:46:34

Hibernate持久

2020-12-24 07:29:32

云計算云基礎(chǔ)云原生DevOps

2009-09-27 14:41:05

Hibernate I

2009-09-25 13:55:05

Hibernate使用

2009-09-27 17:46:22

Hibernate監(jiān)聽
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 青草青草久热精品视频在线观看 | 久久综合99 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 91在线精品一区二区 | 国产精品综合色区在线观看 | 在线观看中文字幕 | 精品久久久久久亚洲精品 | 久久成人一区 | 成人在线观看网址 | 欧美a级成人淫片免费看 | 精品免费国产一区二区三区四区介绍 | www.操.com| www312aⅴ欧美在线看 | 欧美日韩一卡二卡 | 亚洲国产精品一区二区三区 | 中文字幕1区2区3区 日韩在线视频免费观看 | 岛国二区| 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 日日天天| 一区二区在线不卡 | 精品入口麻豆88视频 | 精品一区二区电影 | 国产精品成人一区二区三区吃奶 | 91福利在线观看视频 | 欧美久久久久 | 99国产精品99久久久久久粉嫩 | 日韩一区二区黄色片 | 中文字幕亚洲欧美 | 亚洲一区二区三区在线观看免费 | 国产精品久久久久久久久久尿 | 亚洲系列第一页 | 在线看av网址 | 久久久人成影片免费观看 | 欧美成人a∨高清免费观看 91伊人 | 亚洲精品久久久久久国产精华液 | 在线日韩欧美 | www.青青草 | 亚洲色综合 | 精品欧美乱码久久久久久1区2区 | 国产精品久久久亚洲 | 91精品国产综合久久久久蜜臀 |