欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Hibernate中merge()方法的作用是什么

Hibernate中merge()方法的作用是什么,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、網(wǎng)站制作、龍山網(wǎng)絡(luò)推廣、小程序制作、龍山網(wǎng)絡(luò)營銷、龍山企業(yè)策劃、龍山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供龍山建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:aaarwkj.com

具體的實現(xiàn)過程如下:

背景:
◆Account 和 Group 兩個對象,設(shè)置了雙向的many-to-many關(guān)系,lazy=true

◆不使用open session in view 模式

◆不使用hibernate二級緩

◆考慮web應(yīng)用場景,設(shè)置account和group關(guān)聯(lián)時,只需要group和account的id就夠了。

◆數(shù)據(jù)庫中存在兩個group: 1.administrators, 2.engineers而po對象中,group信息為:1.invalid, 2.any one

代碼A:

Account account = (Account) getHibernateTemplate().merge(po);     Long id = account.getId();     System.out.println("\tGet obj after added in dao start ...");     Account readAccount = (Account) getHibernateTemplate().get(         Account.class, id);     System.out.println("\tGet obj after added in dao end ...");     System.out.println("\tIs po==readAccount ? " + (po == readAccount));     System.out.println("\tShow detai of po: " + po.toDetailString());     System.out.println("\tShow detai of readAccount: " + readAccount.toDetailString());

其中,為po設(shè)置了兩個group 輸出結(jié)果:

Hibernate: select ... from SYS_GROUPS where ID=?     Hibernate: select ... from SYS_GROUPS where ID=?         Get obj after added in dao start ...         Get obj after added in dao end ...         Is po==readAccount ? false        Show detai of po: Account[0.account_22, groups[2.any one 1.invalid ]]         Show detai of readAccount: Account[22.account_22, groups[2.engineers 1.administrators ]]     Hibernate: insert into SYS_ACCOUNTS (...) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)     Hibernate: insert into SYS_GROUP_MEMBER (ACCOUNT_ID, GROUP_ID) values (?, ?)     Hibernate: insert into SYS_GROUP_MEMBER (ACCOUNT_ID, GROUP_ID) values (?, ?)

代碼B:

Long id = (Long) getHibernateTemplate().save(po);     System.out.println("\tGet obj after added in dao start ...");     Group group = (Group)getHibernateTemplate().get(Group.class,new Long(1));     System.out.println("\tGroup detai:" + group.toString());     Account readAccount = (Account) getHibernateTemplate().get(         Account.class, id);     System.out.println("\tGet obj after added in dao end ...");     System.out.println("\tIs po==readAccount ? " + (po == readAccount));     System.out.println("\tShow detai of po: " + po.toDetailString());     System.out.println("\tShow detai of readAccount: "        + readAccount.toDetailString());         getHibernateTemplate().merge(readAccount);     Account readAgain = (Account) getHibernateTemplate().get(Account.class,         id);     System.out.println("\tIs po==readAgain ? " + (readAgain == po));     System.out.println("\tIs readAgain== readAccount? "        + (readAgain == readAccount));     System.out.println("\tShow detai again: " + readAgain.toDetailString());

輸出結(jié)果:

    Get obj after added in dao start ...     Hibernate: select ... from SYS_GROUPS where ID=?         Group detai:Group 1. administrators         Get obj after added in dao end ...         Is po==readAccount ? true        Show detai of po: Account[27.account_27, groups[1.invalid 2.any one ]]         Show detai of readAccount: Account[27.account_27, groups[1.invalid 2.any one ]]     Hibernate: select ... from SYS_GROUPS where ID=?         Is po==readAgain ? true        Is readAgain== readAccount? true        Show detai again: Account[27.account_27, groups[1.administrators 2.engineers ]]     Hibernate: insert into SYS_ACCOUNTS (...) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)     Hibernate: insert into SYS_GROUP_MEMBER (ACCOUNT_ID, GROUP_ID) values (?, ?)     Hibernate: insert into SYS_GROUP_MEMBER (ACCOUNT_ID, GROUP_ID) values (?, ?)

結(jié)論:

1. Hibernate merge()方法會導(dǎo)致執(zhí)行查詢group對象的select語句,在調(diào)用merge()命令時立即執(zhí)行(條件:目標(biāo)group對象沒有被緩存)

2. 無論Hibernate merge()或save()方法,insert語句都在***執(zhí)行,并非在調(diào)用相應(yīng)命令時立即執(zhí)行

3. 直接調(diào)用merge()方法時,會返回一個新的instance,原po保持不變

4. save()之后,po中的group對象并沒有被關(guān)聯(lián)到session,因此查詢group(id=1)會觸發(fā)select語句

5. save()之后,po對象被關(guān)聯(lián)到session,再次查詢,不會觸發(fā)select語句,并且不會檢查group對象是否被關(guān)聯(lián)到session

6. save()之后再調(diào)用merge,返回的是同一個instance,但其關(guān)聯(lián)group對象會被更新

如果在add一個對象之后,如果存在關(guān)聯(lián)對象,并且需要再同一個hibernate session中進行回顯,則建議使用Hibernate merge()方法。

看完上述內(nèi)容,你們掌握Hibernate中merge()方法的作用是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

本文名稱:Hibernate中merge()方法的作用是什么
標(biāo)題鏈接:http://aaarwkj.com/article16/peeogg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作網(wǎng)站營銷、、靜態(tài)網(wǎng)站

廣告

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

成都app開發(fā)公司
亚洲国产精品一区二区首页| 国产精品一级片一区二区| 国产午夜男人天堂手机| 99久久免费中文字幕| 国产精品水嫩水嫩粉嫩| 亚洲精品理论片在线观看| 一区二区三区视频观看在线| 亚洲高清成人在线观看| 亚洲伦理第一页中文字幕| 欧美亚洲成人免费电影| 四虎精品视频在线免费| 久久国产亚洲欧美一区| 偷怕自拍在线免费观看| 日韩精品人妻中文字幕满员| 成人精品颜射少妇内射| 啄木乌法国一区二区三区| 内射小美女阴户毛片在线| 91久久精品人妻一区二区| 日韩精品高清视频在线观看| 欧美亚洲国产精品久久久| 亚洲女同另类在线播放视频| 日本在线观看免费高清| 亚洲三级伦理中文字幕| 国产大片在线观看一区二区| 人妻少妇久久中文字幕韩| 日韩天堂视频在线播放| 亚洲国内一区二区三区| 国产精品久久亚洲一区二区| 亚洲美女插入av网络导航| 中文字幕中文字幕久久不卡| 夜夜嗨av一区二区三区| 中文字幕日韩一区二区| 91久久精品人妻一区二区| 国产亚洲成人精品一区| 精品人妻系列一区二区| 91亚洲欧美日韩在线观看| 国产999精品在线观看| 久久亚洲欧洲日本韩国欧美| 国产日韩欧美亚洲一区二区| 日本不卡一二区不久精品免费| 熟女av一区二区三区四区|