1. 程式人生 > >hibernate之saveorupdate()、save()、update()都有什麼區別

hibernate之saveorupdate()、save()、update()都有什麼區別

save()在資料庫中生成一條記錄,如果資料庫中有,會報錯說有重複的記錄。

saveorupdate()如果傳入的物件在資料庫中有就做update操作,如果沒有就做save操作。

update()就是更新資料庫中的記錄

1.條件:主鍵

主鍵在saveorupdate()方法中是起著關鍵作用的,只有這個主鍵的值不為空的時候才進行insert還是update的判斷,否則直接insert

若主鍵不為空,就可以進行saveorupdate()操作了。

saveOrUpdate是當你一個pojo物件在不確定的情況下使用的,目的在於當這個物件存在的時候就將其狀態改變成現在這個狀態,如果不存在就使其持久化儲存現在這個狀態,也就是說不論怎樣就是要有這個物件

2,方法返回值

save是返回插入資料的主鍵的,而saveOrUpdate是void

3,使用方法

save方法更適用於確定了是要插入,而且需要得到插入資料的主鍵

而saveOrUpdate更傾向於不確定是插入還是更新,而且你不需要得到他的主鍵

另一方面,如果你無法確定你要插入或更新的物件是不是持久態或遊離態時。如果你save一個持久態或更新一個遊離態,這都是有問題的,此時你就要用到saveOrUpdate

總體來說,如果你能確定你即將操作物件的狀態,則不需要用saveOrUpdate

相關推薦

hibernatesaveorupdate()save()update()什麼區別

save()在資料庫中生成一條記錄,如果資料庫中有,會報錯說有重複的記錄。 saveorupdate()如果傳入的物件在資料庫中有就做update操作,如果沒有就做save操作。 update()就是更新資料庫中的記錄 1.條件:主鍵 主鍵在saveorupdate()方法

兩種家常菜竟是長壽藥!抗癌降三高增強免疫力,家家.

adding gin color 5-0 增加 需求 日本 mar posit 兩種家常菜竟是長壽藥!抗癌降三高、增強免疫力,家家都有. 2016-05-03 都市報道擴大版 我們一般認為,長壽藥是人參、燕窩等名貴食物。但其實,日常生活中,就有大量的食物

redis 命令selectdbsizeflushdbflushallsavebgsaveconfig getconfig setconfig rewrite

flush 修改密碼 端口 實例 sha 清空 edi 操作 require select 切換庫 dbsize 當前庫中數據條數 flushdb | flushall 清空數據,一個是清空當前庫,一個清空當前實例 save | bgsave 保存到磁盤,bgsave

分享知識-快樂自己:Hibernate 中 get() 和 load()savaupdatesavaOrUpdatemerge,不同處及執行原理?

1):Hibernate 中 get()  和 load() 有什麼不同之處? 1)Hibernate的 get方法,會確認一下該id對應的資料是否存在,首先在session快取中查詢,然後在快取中查詢,還沒有就查詢資料庫,資料庫中沒有就返回null。 2)Hibernate的 load方法載入

HibernateHibernatesavepersist和saveOrUpdate何不同?

http://javarevisited.blogspot.tw/2012/09/difference-hibernate-save-vs-persist-and-saveOrUpdate.html     所有這三個方法,也就是save()、saveOrUpdate()

貴陽杭州成都爭相“上鏈”搶先機,誰是未來的“區塊鏈”?

區塊鏈思維這兩天區塊鏈成了兩會熱議的話題,從商界大佬到政府官員,紛紛發表自己對區塊鏈的看法。 昨天,成都市政協委員梁剛就建議,應該將成都應打造為中國的區塊鏈技術中心,助推新經濟發展。雖然國家在政策層面尚未出臺正式的區塊鏈政策法規,但從當前的情況來看,區塊鏈的發展,正從商業層面向政府層面推進。城市“上鏈”正成為

大資料scala(三) --- 類的檢查轉換繼承,檔案,特質trait,操作符,apply,update,unapply,高階函式,柯里化,控制抽象,集合

一、類的檢查和轉換 -------------------------------------------------------- 1.類的檢查 isInstanceOf -- 包括子類 if( p.isInstanceOf[Employee]) {

hibernate註解@Onetomany@Manytoone@JoinColumn

  @Onetomany用於實體類與資料庫表對映中少的一方,請看下面的例子。 假設一個使用者只有一種角色,使用者和角色是onetomany的關係 使用者實體 @Entity @Table(name="user") public

Android開發應用狀態列導航欄透明

  直接上程式碼 //狀態列、導航欄都透明 private void hideStatusBarNavigationBar() { if (Build.VERSION.SDK_INT = Build.VERSION_CODES.LOLLIPOP)

tensorflow 模型的儲存(save)恢復/載入(restore)

  1、什麼是 tensorflow 模型 當你訓練完一個神經網路,你可能會想要儲存這個網路,以便將來拿來使用或直接用於其他資料的 deploy, tensorflow 模型包括:已訓練並優化的權重引數,網路結構和 graph。 tensorflow 模型檔案包括兩大塊:

Mongodb資料更新命令(updatesave

Mongodb更新有兩個命令:update、save。 1.1update命令 update命令格式: db.collection.update(criteria,objNew,upsert,multi) 引數說明: criteria:查詢條件 objNew:

【面試持久化框架】hibernatemybatisjpa規範

1.hibernate 和 mybatis 的區別     ·實現上的區別:mybatis只有一個核心jar包,另外和spring整合需要mybatis-spring的jar包,使用快取需要mybatis-ehcache的jar包,而hibernate需要一系列的jar包,

監聽總結3.監聽命令:lsnrctl工具的三個命令startstop和status是分步執行的

首先,我們需要知道兩個事情: 1、lsnrctl工具下的三個命令,分別是status、stop、start。 我們從三個命令執行後在螢幕上顯示的結果來看,可以發現一個共性,就是都有“正在連線到”這句話 。 2、每次進入lsnrctl工具的環境時,lsnrctl工具都會自動讀

HibernateHibernate的聚類查詢分組查詢排序與時間

在Hibernate中的HQL語句其實能夠基本能夠實現SQL語句所做的事情,正如jQuery至於javascript一樣。雖然HQL語句是對類的查詢,但是HQL在實行聚類查詢、分組查詢、排序與時間之差等查詢,也無須把查詢結果查詢出來,再通過對List的處理才得到結果。 比如

hibernate saveupdate以及saveOrUpdate區別

save()方法很顯然是執行儲存操作的,如果是對一個新的剛new出來的物件進行儲存,自然要使用這個方法了,資料庫中沒有這個物件。 update()如果是對一個已經存在的託管物件進行更新那麼肯定是要使用update()方法了,資料中有這個物件。 saveOrUpdate

hibernateinversecascade----同時儲存主從表資訊

總結:inverse不讓主表物件生成快照和快取時生成外來鍵那部分資訊,從而達到兩個save語句執行後只會有兩條insert語句而不會有update語句;cascade(級聯)是為了只寫一句save就能同時儲存主從表資訊。這是inverse部分:如果我們需要新增一個user和一

Hibernate實戰資料持久化四Session的clear()flush()commit()close()方法

flush()flush方法的主要作用就是清理快取,強制資料庫與hibernate快取同步,以保證資料的一致性。    通常,執行session.save,update,delete的時候,只是一個登記

Hibernate二 一級快取(session)二級快取(sessionFactory)

一、操作Session快取 (1)flush Session 按照快取中物件的屬性變化來同步更新資料庫 1)預設情況下 Session 在以下時間點重新整理快取: 顯式呼叫 Session 的 flush() 方法 當應用程式呼叫 Transaction

見刊編輯推薦《價值工程》期刊雜誌技術經濟管理教育等多學科專業稿件可以投

字符 數字 路徑 聯系電話 com 處理 施工 產生 企業 簡介: 《價值工程雜誌》雜誌。涉及技術、經濟、管理、教育等多學科,是多學科緊密結合、實施創新與優化的一門現代管理技術,而且還是一種重要的管理理念。價值工程的價值導向原則和創新本質、以及它的多學科化特性,將對科研創新