最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Hibernate持久化對象的狀態(tài)

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 14:20:55
文檔

Hibernate持久化對象的狀態(tài)

Hibernate持久化對象的狀態(tài):1. 站在持久化的角度 , Hibernate 把對象分為 4 種狀態(tài) : 持久化狀態(tài) , 臨時狀態(tài) , 游離狀態(tài)(脫管狀態(tài)) , 刪除狀態(tài).Session 的特定方法能使對象從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài) . 2. 臨時狀態(tài)(Transient) : 1). 在使用代理主鍵的情況下 , OID
推薦度:
導(dǎo)讀Hibernate持久化對象的狀態(tài):1. 站在持久化的角度 , Hibernate 把對象分為 4 種狀態(tài) : 持久化狀態(tài) , 臨時狀態(tài) , 游離狀態(tài)(脫管狀態(tài)) , 刪除狀態(tài).Session 的特定方法能使對象從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài) . 2. 臨時狀態(tài)(Transient) : 1). 在使用代理主鍵的情況下 , OID

1. 站在持久化的角度 , Hibernate 把對象分為 4 種狀態(tài) : 持久化狀態(tài) , 臨時狀態(tài) , 游離狀態(tài)(脫管狀態(tài)) , 刪除狀態(tài).Session 的特定方法能使對象從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài) . 2. 臨時狀態(tài)(Transient) : 1). 在使用代理主鍵的情況下 , OID 通常為 null 2

1. 站在持久化的角度 , Hibernate 把對象分為 4 種狀態(tài) : 持久化狀態(tài), 臨時狀態(tài), 游離狀態(tài)(脫管狀態(tài)) , 刪除狀態(tài).Session 的特定方法能使對象從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài) .
2. 臨時狀態(tài)(Transient) : 1). 在使用代理主鍵的情況下 , OID 通常為 null 2). 不處于 Session 的緩存中 3). 在數(shù)據(jù)庫中沒有對應(yīng)的記錄
3. 持久化狀態(tài)(也叫”托管” )( Persist)
1). OID 不為 null 2). 位于 Session 緩存中 3). 若在數(shù)據(jù)庫中已經(jīng)有和其對應(yīng)的記錄 , 持久化對象和數(shù)據(jù)庫中的相關(guān)記錄對應(yīng) 4). Session 在 flush 緩存時 , 會根據(jù)持久化對象的屬性變化 , 來同步更新數(shù)據(jù)庫 5). 在同一個 Session 實例的緩存中 , 數(shù)據(jù)庫表中的每條記錄只對應(yīng)唯一的持久化對象( Session 緩存對象的 OID 不能重復(fù))
@Test public void testOID(){ News news2 = (News ) session.get (News.class , 1); System.out.println (news2 ); News news = new News (); news.setAuthor ("Oracle2" ); news.setContent ("Oracle DB" ); news.setDate (new Date ()); news.setTitle ("DB" ); news.setId (1 ); //拋出異常: org.hibernate.NonUniqueObjectException session.update (news ); }
4. 游離狀態(tài)(也叫”脫管” ) (Detached ): 1). OID 不為 null 2). 不再處于 Session 緩存中 3). 一般情況需下 , 游離對象是由持久化對象轉(zhuǎn)變過來的 , 因此在數(shù)據(jù)庫中可能還存在與它對應(yīng)的記錄
5. 刪除狀態(tài)(Removed) 1). 在數(shù)據(jù)庫中沒有和其 OID 對應(yīng)的記錄 2). 不再處于 Session 緩存中 3). 一般情況下 , 應(yīng)用程序不該再使用被刪除的對象
6. 狀態(tài)的轉(zhuǎn)換圖 \ \
7. get & load 的區(qū)別: 共同點: get、load 從數(shù)據(jù)表中加載一個對象 , 加載后即為持久化狀態(tài)的對象 不同點: get:<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPiDBory0sunRr8r9vt2x7S4gyPTDu9PQttTTprXEvMfCvCA8c3Ryb25nPiw8L3N0cm9uZz4gt7W72CBudWxsIKO7CgogICAgPHN0cm9uZz5sb2FkPC9zdHJvbmc+PHN0cm9uZz46PC9zdHJvbmc+INHTs9my6dGvyv2+3bHtIC4g1rG1vbXa0ru0zsq508O4w7bUz/PKsSA8c3Ryb25nPiw8L3N0cm9uZz4g1Nm9+NDQsunRr6OsCgogICAgz8i3tbvYtcTKx9K7uPa0+sDtttTP8yAuIMj0w7vT0LbU06a1xLzHwrwgPHN0cm9uZz4sPC9zdHJvbmc+sqLH0sq508PBy7jDttTP8yA8c3Ryb25nPiw8L3N0cm9uZz4g1PK74cXXs/ZvcmcuaGliZXJuYXRlLk9iamVjdE5vdEZvdW5kRXhjZXB0aW9uINLss6MKCjxicj4KCgo8YnI+CgoKOC4gdXBkYXRlILe9t6ijugoKPGJyPgoKCiAgICBAVGVzdAoKICAgIHB1YmxpYyB2b2lkIHRlc3RVcGRhdGU8c3Ryb25nPigpezwvc3Ryb25nPgoKICAgICAgICBOZXdzIG5ld3MgPHN0cm9uZz49PC9zdHJvbmc+IDxzdHJvbmc+KDwvc3Ryb25nPk5ld3MgPHN0cm9uZz4pPC9zdHJvbmc+IHNlc3Npb24uZ2V0IDxzdHJvbmc+KDwvc3Ryb25nPk5ld3MuY2xhc3MgPHN0cm9uZz4sPC9zdHJvbmc+IDE8c3Ryb25nPik7PC9zdHJvbmc+CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiA8c3Ryb25nPig8L3N0cm9uZz5uZXdzIDxzdHJvbmc+KTs8L3N0cm9uZz4KCiAgICAKCiAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0IDxzdHJvbmc+KCk7PC9zdHJvbmc+CgogICAgICAgIHNlc3Npb24uY2xlYXIgPHN0cm9uZz4oKTs8L3N0cm9uZz4KCiAgICAKCiAgICAgICAgc2Vzc2lvbiA8c3Ryb25nPj08L3N0cm9uZz4gc2Vzc2lvbkZhY3Rvcnkub3BlblNlc3Npb24gPHN0cm9uZz4oKTs8L3N0cm9uZz4KCiAgICAgICAgdHJhbnNhY3Rpb24gPHN0cm9uZz49PC9zdHJvbmc+IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbiA8c3Ryb25nPigpOzwvc3Ryb25nPgoKICAgIAoKICAgICAgICAgPHN0cm9uZz4vLzwvc3Ryb25nPrTLyrG21M/zzqrTzsDr17TMrAoKICAgICAgICBuZXdzLnNldEF1dGhvciA8c3Ryb25nPig8L3N0cm9uZz4mcXVvdDtPcmFjbGUmcXVvdDsgPHN0cm9uZz4pOzwvc3Ryb25nPgoKICAgIAoKICAgICAgICAgPHN0cm9uZz4vLzwvc3Ryb25nPnVwZGF0ZSC/ydLUyrnTzsDrttTP87Hkzqqz1r7Du6+21M/zIC4KCiAgICAgICAgIDxzdHJvbmc+Ly88L3N0cm9uZz7NqLOj0OjSqreiy83Su8z1IFVQREFURSDT777kCgogICAgICAgICA8c3Ryb25nPi8vPC9zdHJvbmc+yPS21M/zvLTOqrPWvsO7r7bUz/MgPHN0cm9uZz4sPC9zdHJvbmc+INTysrvQ6NKqtffTwyB1cGRhdGU8c3Ryb25nPigpPC9zdHJvbmc+ILe9t6gKCiAgICAgICAgc2Vzc2lvbi51cGRhdGUgPHN0cm9uZz4oPC9zdHJvbmc+bmV3cyA8c3Ryb25nPik7PC9zdHJvbmc+CgogICAgPHN0cm9uZz59PC9zdHJvbmc+Cgo8YnI+CgoK16LS4qO6Cgoxo6kgLiDKudPDs6G+sKO6IEJcUyDP7sS/1tC009Kzw+a0q7n9wLTSu7j2ttTP86Os0OjSqrbUxuS9+NDQuPzQwsqxo6y8tLX308MgdXBkYXRlo6ijqbe9t6gKCjKjqSAuIMj0yv2+3bHt1tDDu9PQttTP87bU06a1xLzHwryjrLu50qrWtNDQIHVwZGF0ZTxzdHJvbmc+KCk8L3N0cm9uZz4gt723qKOs1PK74cXXs/bS7LOjo7ogb3JnLmhpYmVybmF0ZS5TdGFsZU9iamVjdFN0YXRlRXhjZXB0aW9uCgo8YnI+CgoKOS4gc2F2ZU9yVXBkYXRlIDxzdHJvbmc+KCk6PC9zdHJvbmc+ILGjtOa78rj80MIKCjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/2014/1107/20141107092134167.png" alt="\">
11. delete ():刪除一個對象對應(yīng)的記錄。 1). 若只想刪除指定的對象,設(shè)置 ID 即可。 2). 若數(shù)據(jù)表中沒有對應(yīng)的記錄,則拋出異常: java.lang.IllegalArgumentException
12. Hibernate 調(diào)用原生的 JDBC API:
session.doWork(new Work() { @Override public void execute(Connection connection ) throws SQLException { //使用 JDBC 原生的 API } });

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Hibernate持久化對象的狀態(tài)

Hibernate持久化對象的狀態(tài):1. 站在持久化的角度 , Hibernate 把對象分為 4 種狀態(tài) : 持久化狀態(tài) , 臨時狀態(tài) , 游離狀態(tài)(脫管狀態(tài)) , 刪除狀態(tài).Session 的特定方法能使對象從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài) . 2. 臨時狀態(tài)(Transient) : 1). 在使用代理主鍵的情況下 , OID
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top