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