私はそれSession.save()
が一時的なオブジェクトを持続させることを知っています。そして、私はそれがまたsaveOrUpdate()
、そしてまた持っているのを見るpersist()
。
それなら、それsave()
はと同等だと思いますSQL INCLUDE
よね?
DBにすでに存在するオブジェクトがあり、それを使用しているsave()
場合、別の行が含まれるのでしょうか、そのフィールドが更新されるのでしょうか、それとも単に無視されて何も起こらないのでしょうか。
save
との違いsaveOrUpdate
save
とsaveOrUpdate
メソッドの主な違いはsave
、新しい識別子を生成INSERT
してデータベースにレコードを作成する一方で、レコードの存在に基づいて更新するsaveOrUpdate
ことができることです。INSERT
したがってsave
、存在チェックを実行せずに続行します。一方、saveOrUpdate
存在をチェックします。レコードが存在する場合は更新され、そうでない場合は新しいレコードが挿入されます。
persist
との基本的な違いsave
save
1)との最初の違いpersist
はそれらのreturn
タイプです。save
メソッドと同様に、データベースにpersist
もINSERT
記録されますが、return type ofpersist
はvoid
、returntypeofsave
はですSerializable object
。
persist
2)とのもう1つの違いsave
は、両方のメソッドが一時インスタンスを永続化することです。ただし、persist
メソッドは識別子の値が永続インスタンスにすぐに割り当てられることを保証しません。割り当てはフラッシュ時に発生する可能性があります。
save Persists an entity. Will assign an identifier if one doesn't exist.
If one does, it's essentially doing an update.
Returns the generated ID of the entity.
私が提案しているのは、先に進むためにこれを読む必要があるということです。
私の知る限り、それは次のように起こっています。
save()
エンティティを保存しているだけですpersist()
インスタンスを管理対象エンティティとして変更しています。これは、あなたがそれに対して操作を行い、あなたのトランザクションがまだ開いている場合、あなたが呼び出すときにそれが自動的に保存されることを意味しますflush()
(私が間違っていない場合)merge()
これも似persist()
ていますが、古いインスタンスを変更せずに新しいインスタンスを返します。saveOrUpdate()
あなたはここで見ることができますsave()メソッドは、レコードをデータベースに挿入します。ただし、saverupdate()メソッドは、pkが見つかった場合はpkをチェックし、それ以外の場合はデータを更新します。それ以外の場合は、データベースにデータを挿入します。