bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Hibernate持久化對(duì)象的狀態(tài)有哪些-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)Hibernate持久化對(duì)象的狀態(tài)有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的千陽(yáng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

Hibernate中的對(duì)象有3中狀態(tài),瞬時(shí)對(duì)象(TransientObjects)、持久化對(duì)象(PersistentObjects)和離線(xiàn)對(duì)象(DetachedObjects也叫做脫管對(duì)象)。

下圖3.1顯示了瞬時(shí)對(duì)象、持久化對(duì)象和離線(xiàn)對(duì)象之間的關(guān)系以及它們之間的轉(zhuǎn)換。

Hibernate持久化對(duì)象的狀態(tài)有哪些

圖3.1

臨時(shí)狀態(tài):由Java的new命令開(kāi)辟內(nèi)存空間的java對(duì)象也就是普通的java對(duì)象,如果沒(méi)有變量引用它它將會(huì)被JVM收回。臨時(shí)對(duì)象在內(nèi)存中是孤立存在的,它的意義是攜帶信息載體,不和數(shù)據(jù)庫(kù)中的數(shù)據(jù)由任何的關(guān)聯(lián)。通過(guò)Session的save()方法和saveOrUpdate()方法可以把一個(gè)臨時(shí)對(duì)象和數(shù)據(jù)庫(kù)相關(guān)聯(lián),并把臨時(shí)對(duì)象攜帶的信息通過(guò)配置文件所做的映射插入數(shù)據(jù)庫(kù)中,這個(gè)臨時(shí)對(duì)象就成為持久化對(duì)象。

持久化狀態(tài):持久化對(duì)象在數(shù)據(jù)庫(kù)中有相應(yīng)的記錄,持久化對(duì)象可以是剛被保存的,或者剛被加載的,但都是在相關(guān)聯(lián)的session聲明周期中保存這個(gè)狀態(tài)。如果是直接數(shù)據(jù)庫(kù)查詢(xún)所返回的數(shù)據(jù)對(duì)象,則這些對(duì)象和數(shù)據(jù)庫(kù)中的字段相關(guān)聯(lián),具有相同的id,它們馬上變成持久化對(duì)象。如果一個(gè)臨時(shí)對(duì)象被持久化對(duì)象引用,也立馬變?yōu)槌志没瘜?duì)象。
如果使用delete()方法,持久化對(duì)象變?yōu)榕R時(shí)對(duì)象,并且刪除數(shù)據(jù)庫(kù)中相應(yīng)的記錄,這個(gè)對(duì)象不再與數(shù)據(jù)庫(kù)有任何的聯(lián)系。

持久化對(duì)象總是與Session和Transaction關(guān)聯(lián)在一起,在一個(gè)session中,對(duì)持久化對(duì)象的操作不會(huì)立即寫(xiě)到數(shù)據(jù)庫(kù),只有當(dāng)Transaction(事務(wù))結(jié)束時(shí),才真正的對(duì)數(shù)據(jù)庫(kù)更新,從而完成持久化對(duì)象和數(shù)據(jù)庫(kù)的同步。在同步之前的持久化對(duì)象成為臟對(duì)象。

當(dāng)一個(gè)session()執(zhí)行close()、clear()、或evict()之后,持久化對(duì)象就變?yōu)殡x線(xiàn)對(duì)象,這時(shí)對(duì)象的id雖然擁有數(shù)據(jù)庫(kù)的識(shí)別值,但已經(jīng)不在Hibernate持久層的管理下,他和臨時(shí)對(duì)象基本上一樣的,只不過(guò)比臨時(shí)對(duì)象多了數(shù)據(jù)庫(kù)標(biāo)識(shí)id。沒(méi)有任何變量引用時(shí),jvm將其回收。

脫管狀態(tài):Session關(guān)閉之后,與此Session關(guān)聯(lián)的持久化對(duì)象就變成為脫管對(duì)象,可以繼續(xù)對(duì)這個(gè)對(duì)象進(jìn)行修改,如果脫管對(duì)象被重新關(guān)聯(lián)到某個(gè)新的Session上,會(huì)在此轉(zhuǎn)成持久對(duì)象。

脫管對(duì)象雖然擁有用戶(hù)的標(biāo)識(shí)id,所以通過(guò)update()、saveOrUpdate()等方法,再次與持久層關(guān)聯(lián)。

下面我們就通過(guò)使用hibernate,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的增刪改查來(lái)體現(xiàn)三種狀態(tài)之間的轉(zhuǎn)換過(guò)程。

添加修改演示三種狀態(tài)之間的變化

 當(dāng)我們建立Session都要實(shí)例化SessionFactory,所以我們把重復(fù)的代碼進(jìn)行封裝,并且session是單線(xiàn)程的。我們把對(duì)session的管理,打開(kāi)session,關(guān)閉session等封裝到工具類(lèi)中,代碼如下所示。

package com.bjpowernode.hibernate; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 
public class HibernateUtils { 
 private static SessionFactory factory; 
 //static只初始化一次. 
 static 
 { 
 try{ 
 //默認(rèn)讀取的是hibernate.cfg.xml 文件. 
 Configuration cfg = new Configuration().configure(); 
 //建立SessionFactory. 
 factory = cfg.buildSessionFactory(); 
 }catch(Exception e ) 
 { 
 e.printStackTrace(); 
 } 
 } 
 public static Session getSession() 
 { 
 //打開(kāi)session. 
 return factory.openSession(); 
 } 
 //關(guān)閉session. 
 public static void closeSession(Session session) 
 { 
 //判斷是否為空. 
 //判斷是否是打開(kāi)狀態(tài)再進(jìn)行關(guān)閉. 
 if(session!=null) 
 { 
 if(session.isOpen()) 
 { 
 session.close(); 
 } 
 } 
 } 
 //返回工廠類(lèi). 
 public static SessionFactory getSessionFactory() 
 { 
 return factory; 
 } 
} 

網(wǎng)站標(biāo)題:Hibernate持久化對(duì)象的狀態(tài)有哪些-創(chuàng)新互聯(lián)
本文URL:http://vcdvsql.cn/article28/ddjdjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)網(wǎng)站內(nèi)鏈外貿(mào)建站全網(wǎng)營(yíng)銷(xiāo)推廣品牌網(wǎng)站制作網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司