freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

jpa開(kāi)發(fā)文檔(大全)(編輯修改稿)

2024-08-31 22:58 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 Entity的生命周期和狀態(tài)在EJB3中定義了四種Entity的狀態(tài): 新實(shí)體(new)。Entity由應(yīng)用產(chǎn)生,和EJB3 Persistence運(yùn)行環(huán)境沒(méi)有聯(lián)系,也沒(méi)有唯一的標(biāo)示符(Identity)。 持久化實(shí)體(managed)。新實(shí)體和EJB3 Persistence運(yùn)行環(huán)境產(chǎn)生關(guān)聯(lián)(通過(guò)persist(), merge()等方法),在EJB3 Persistence運(yùn)行環(huán)境中存在和被管理,標(biāo)志是在EJB3 Persistence運(yùn)行環(huán)境中有一個(gè)唯一的標(biāo)示(Identity)。 分離的實(shí)體(detached)。Entity有唯一標(biāo)示符,但它的標(biāo)示符不被EJB3 Persistence運(yùn)行環(huán)境管理, 同樣的該Entity也不被EJB3 Persistence運(yùn)行環(huán)境管理。 刪除的實(shí)體(removed)。Entity被remove()方法刪除,對(duì)應(yīng)的紀(jì)錄將會(huì)在當(dāng)前事務(wù)提交的時(shí)候從數(shù)據(jù)庫(kù)中刪除。 圖2 狀態(tài)的轉(zhuǎn)化 持久化Entity(Persist) final EntityManagerFactory emf = ()。 final EntityManager entityManager = ()。 final HelloEntityBean hello = new HelloEntityBean( 1, foo )。 EntityTransaction trans = ()。 ()。 // 持久化hello,在此操作之前hello的狀態(tài)為new ( hello )。 // 這時(shí)hello的狀態(tài)變?yōu)閙anaged ()。 ()。 // 這時(shí)hellow的狀態(tài)變?yōu)閐etached. 當(dāng)保存一個(gè)Entity時(shí),以該對(duì)象為根對(duì)象的整個(gè)對(duì)象圖都會(huì)自動(dòng)的被保存。但在EJB3中,我們?nèi)匀豢梢酝ㄟ^(guò)關(guān)系元數(shù)據(jù)(比如OneToOne,OneToMany)的cascade屬性來(lái)精確定義保存的級(jí)聯(lián)行為。 下面我們來(lái)看看不同的cascade屬性的區(qū)別。 不配置cascade的情況下,EJB3 Persistence運(yùn)行環(huán)境默認(rèn)不會(huì)采用Persistence by reachability。 public class Father{ @Id int id String name。 // OneToOne沒(méi)有配置cascade屬性,因此默認(rèn)不會(huì)使用Persistence by reachablity @OneToOne Son mySon public Father( int id, String name, Son mySon ){ = id。 = name。 = mySon。 } } 現(xiàn)在來(lái)保存一個(gè)Father和Son。 final EntityManager manager = ()。 ().begin。 Son mySon = new Son()。 Father = new Father( 1, father mySon )。 // 保存Father ( father )。 // 由于OneToOne關(guān)系中沒(méi)有配置casacade屬性,father 關(guān)聯(lián)的mySon不會(huì)被自動(dòng)保存,需要分別保存 ( mySon )。 ().mit()。 ()。 現(xiàn)在我們配置casacde= public class Father{ @Id int id String name。 // OneToOne配置cascade=,配置cascade=。 // 。 @OneToOne(cascade=) Son mySon public Father( int id, String name, Son mySon ){ = id。 = mySon。 = name。 } } 在代碼中同樣持久化Father和mySon。 final EntityManager manager = ()。 ().begin。 Son mySon = new Son()。 Father = new Father( 1, mySon )。 // 保存Father。由于OneToOne關(guān)系中配置casacade=,關(guān)聯(lián)的mySon會(huì)自動(dòng)地被持久化 ( father )。 ().mit()。 ()。 建議在應(yīng)用中盡可能使用cascade=,特別是在有復(fù)雜對(duì)象關(guān)系圖的時(shí)候。 獲取Entity如果知道Entity的唯一標(biāo)示符,我們可以用find()方法來(lái)獲得Entity。 Father father = ( , new Integer( 1 ) )。 // ,也可以如下使用 Father father = ( , 1 )。 /* * 或者,可以用Entity名字作為查找。但無(wú)法利用JDK , * 需要使用對(duì)象作為查找主鍵,并需要對(duì)獲得Entity進(jìn)行轉(zhuǎn)型 */ Father father = (Father)( , new Integer( 1 ) )。 更新Entity對(duì)Entity的更新必須在事物內(nèi)完成。和persist中一樣,關(guān)系元數(shù)據(jù)的cascade屬性對(duì)是否集聯(lián)刪除有影響。 ()。 Father father = ( , 1 )。 // 更新原始數(shù)據(jù)類(lèi)型 ( newName )。 // 更新對(duì)象引用 Son newSon = new Son()。 ( newSon )。 // 提交事務(wù),剛才的更新同步到數(shù)據(jù)庫(kù) ()。 刪除Entity對(duì)Entity的刪除必須在事物內(nèi)完成。 ()。 Father father = ( , 1 )。 // 如果father/son的@OneToOne的cascade=,在刪除father時(shí)候,也會(huì)把son刪除。 // 把cascade屬性設(shè)為cascade=。 ( father )。 // 提交事務(wù),剛才的更新同步到數(shù)據(jù)庫(kù) ()。 脫離/附合(Detach/Merge)在三層或者分布式應(yīng)用中,我們很多時(shí)候需要Entity能脫離EntityManager,避免長(zhǎng)時(shí)間保持EntityManager打開(kāi)占用資源和可以在不同的JVM之間傳遞Entity。在脫離EJB3 Persistence Runtime(EntityManager)的管理后,我們?nèi)匀豢梢宰x取或者修改Entity中的內(nèi)容。而在稍后的時(shí)間,我們又可以將Entity重新和原有或者新的EntityManager附合,如果附合前Entity被改動(dòng)過(guò),更改的數(shù)據(jù)可以自動(dòng)的被發(fā)現(xiàn)并和數(shù)據(jù)庫(kù)同步。 EntityManager entityManager = ()。 // 這時(shí)Father還是被EntityManager管理的 Father father = ( , 1 )。 // 當(dāng)entityManger關(guān)閉的時(shí)候,當(dāng)前被entityManager管理的Entity都會(huì)自動(dòng)的脫離EntityManager,狀態(tài)轉(zhuǎn)變?yōu)閐etached ()。 // 脫離EntityManager后,我們?nèi)匀豢梢孕薷腇ather的屬性 ( newName )。 // 在稍后的,我們可以將
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1