[解決済み】Hibernateの各保存方法の違いは何ですか?
質問
Hibernateには、何らかの方法でオブジェクトを受け取り、それをデータベースに格納するメソッドがいくつかあります。これらのメソッドにはどのような違いがあり、いつどれを使用するのか、また、いつ何を使用するのかを知っている1つのインテリジェントなメソッドがないのはなぜですか?
これまでに確認したメソッドは。
-
save()
-
update()
-
saveOrUpdate()
-
saveOrUpdateCopy()
-
merge()
-
persist()
解決方法は?
以下は、私の理解する方法です。 主にこれらは API とはいえ、実際にはこれらすべてを使うことはないのですが。
saveOrUpdate いくつかのチェックにより、save または update のいずれかを呼び出します。 例えば、識別子が存在しない場合、save が呼ばれます。 そうでなければ、updateが呼ばれます。
保存 エンティティを持続させる。 識別子が存在しない場合は、識別子を割り当てます。 存在する場合は、基本的に更新を行います。 生成されたエンティティのIDを返します。
更新 既存の識別子を使用して、エンティティの永続化を試みます。 識別子が存在しない場合は、例外が投げられると思います。
saveOrUpdateCopy これは非推奨であり、今後使用するべきではありません。 代わりに...
マージ さて、ここからが私の知識の乏しいところです。 ここで重要なのは、トランジェント、デタッチド、パーシステントの違いです。 オブジェクトの状態について詳しくは こちらをご覧ください . save & updateでは、永続的なオブジェクトを扱います。 これらはセッションにリンクされているので、Hibernateは何が変更されたかを知っています。 しかし、一時的なオブジェクトがある場合、セッションは関係ありません。 このような場合、更新にはmergeを、保存にはpersistを使用する必要があります。
パーシスト 前述のように、これは一時的なオブジェクトに使用されます。 生成されたIDを返すわけではありません。
関連
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] Java Swingでset(Preferred|Maximum|Minimum)Sizeメソッドの使用は避けた方が良いのでしょうか?
-
[解決済み】HibernateとSpring Data JPAの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] eclipseからTomcatに物理的に発行されるmyjspはどこにあるのでしょうか?
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] アニメーションGIFの表示
-
[解決済み] Hibernateのsession.persist()とsession.save()の違いは何ですか?