中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hibernate saveOrUpdate有什么用

發布時間:2021-12-06 09:14:10 來源:億速云 閱讀:139 作者:iii 欄目:編程語言

這篇文章主要介紹“Hibernate saveOrUpdate有什么用”,在日常操作中,相信很多人在Hibernate saveOrUpdate有什么用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Hibernate saveOrUpdate有什么用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

所以update的作用就在于此,它只會被用于當一個PO對象跨Session進行狀態同步的時候才需要寫。而一個PO對象當它不需要跨Session進行狀態管理的時候,是不需要寫update的。

再談談Hibernate saveOrUpdate的用場:

Hibernate saveOrUpdate和update的區別就在于在跨Session的PO狀態管理中,Hibernate對PO采取何種策略。

例如當你寫一個DAOImpl的時候,讓cat對象增加一個mate,如下定義:

public void addMate(Cat cat, Mate mate) {  Session session = ...;  Transacton tx = ...;  session.update(cat);  cat.addMate(mate);  tx.commit();  session.close();  };

顯然你是需要把Hibernate的操作封裝在DAO里面的,讓業務層的程序員和Web層的程序員不需要了解Hibernate,直接對DAO進行調用。

此時問題就來了:上面的代碼運行正確有一個必要的前提,那就是方法調用參數cat對象必須是一個已經被持久化過的PO,也就是來說,它應該首先從數據庫查詢出來,然后才能這樣用。但是業務層的程序員顯然不知道這種內部的玄妙,如果他的業務是現在增加一個cat,然后再增加它的mate,他顯然會這樣調用,new一個cat對象出來,然后就addMate:

Cat cat = new Cat();  cat.setXXX();  daoimpl.addMate(cat,mate);

但是請注意看,這個cat對象只是一個VO,它沒有被持久化過,它還不是PO,它沒有資格調用addMate方法,因此調用addMate方法不會真正往數據庫里面發送update的sql,這個cat對象必須先被save到數據庫,在真正成為一個PO之后,才具備addMate的資格。

你必須這樣來操作:

Cat cat = new Cat();  cat.setXXX();  daoimpl.addCat(cat);  daoimpl.addMate(cat, mate);

先持久化cat,然后才能對cat進行其他的持久化操作。因此要求業務層的程序員必須清楚cat對象處于何種狀態,到底是***種,還是第三種。如果是***種,就要先save,再addMate;如果是第三種,就直接addMate。

但是最致命的是,如果整個軟件分層很多,業務層的程序員他拿到這個cat對象也可能是上層Web應用層傳遞過來的cat,他自己也不知道這個cat究竟是VO,沒有被持久化過,還是已經被持久化過,那么他根本就沒有辦法寫程序了。

所以這樣的DAOImpl顯然是有問題的,它會對業務層的程序員造成很多編程上的陷阱,業務層的程序員必須深刻的了解他調用的每個DAO對PO對象進行了何種狀態管理,必須深刻的了解他的PO對象在任何時候處于什么確切的狀態,才能保證編程的正確性,顯然這是做不到的,但是有了 Hibernate saveOrUpdate,這些問題就迎刃而解了。

到此,關于“Hibernate saveOrUpdate有什么用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枣庄市| 大埔县| 英吉沙县| 开原市| 曲沃县| 元朗区| 西充县| 营山县| 石林| 太湖县| 开阳县| 沽源县| 渝北区| 凉城县| 岱山县| 安远县| 凌云县| 内江市| 刚察县| 特克斯县| 左云县| 循化| 宁波市| 庆元县| 卢湾区| 博客| 任丘市| 沙湾县| 会东县| 桐庐县| 崇礼县| 揭东县| 东丽区| 阳朔县| 临西县| 平昌县| 黎城县| 兴业县| 商洛市| 金华市| 广丰县|