理解Hibernate 保存方法之間的差異
在Hibernate ORM 框架中,有一系列方法允許使用者將物件持久化到一個資料庫。每種方法都有特定的目的並具有獨特的特徵。以下更深入地探討了這些方法之間的差異:
save()
-
用途:在資料庫中保存一個新物件.
-
行為:分配一個物件的標識符(如果它還沒有)。如果物件具有現有標識符,它實際上會更新資料庫中物件的狀態。
-
用法:非常適合在資料庫中建立新記錄資料庫。
update()
-
用途:更新資料庫中現有的物件。
-
行為: 要求物件具有現有識別碼。嘗試使用該標識符持久保存物件。如果缺少標識符,通常會引發異常。
-
用法:適合更新
saveOrUpdate()
-
用途🎜>。 > 呼叫save() 或update() 基於某些檢查。
-
行為:如果物件沒有標識符,則呼叫save()。否則,使用 update()。
-
用法: 可用於建立或更新對象,前提是
saveOrUpdateCopy()
saveOrUpdateCopy()-
已棄用:不再推薦此方法。相反,請使用
merge()
。
merge()
用途:- 合併將分離的或暫時的物件放入持久物件中context. 行為: 主要區別在於對象狀態的概念。分離的或瞬態的物件不與 Hibernate 會話關聯。若要更新或儲存此類對象,必須使用
merge()- 。
用法:
非常適合更新或保存分離或瞬態對象
persist()
-
用途:與
merge ()- 類似,它用於瞬態物件。 行為: 將瞬態物件保留到資料庫中。它
不- 傳回產生的識別碼。
用法:
適合保存新的瞬態對象,而不需要立即識別符。
以上是您應該使用哪種 Hibernate 保存方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!