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

正文內(nèi)容

jpa開發(fā)文檔(編輯修改稿)

2024-09-04 23:30 本頁面
 

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