ホームページ  >  記事  >  Java  >  Hibernate では `session.persist()` または `session.save()` を使用する必要がありますか?

Hibernate では `session.persist()` または `session.save()` を使用する必要がありますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 22:10:03379ブラウズ

 Should I use `session.persist()` or `session.save()` in Hibernate?

Hibernate の session.persist() メソッドと session.save() メソッドの比較

Hibernate では、session.persist() と session の両方。 save() はオブジェクトを永続化するために使用されます。ただし、この 2 つのメソッドには、特定のシナリオでの動作に影響を与える重要な違いがあります。

session.persist() と session.save()

定義:

  • persist(): 一時的なインスタンスを永続化します。
  • save(): インスタンスを即座に永続化することや、識別子の割り当てを保証するものではありません。

識別子の割り当て:

  • persist(): 即時の識別子の割り当ては保証されません。
  • save(): 識別子を返します。 INSERT ステートメントの実行が必要になる場合があります。

トランザクション要件:

  • persist(): トランザクション境界の外側で INSERT を実行しません。
  • save(): トランザクションの外でも、INSERT をすぐに実行します。

意味:

  • 永続: トランザクション外の INSERT がないことを保証し、拡張セッション/永続コンテキストを使用した長時間実行の会話に適しています。
  • 保存: トランザクションに関係なく、(必要な場合) すぐに識別子を割り当てます。このステータスは、長時間の会話では必ずしも望ましいとは限りません。

例:

データベースが頻繁に更新されない、長時間実行される会話を考えてみましょう。 persist() を使用すると、セッションに追加されたオブジェクトはトランザクションがコミットされたときにのみ永続化されます。これにより、不要な INSERT や潜在的なデータの不一致が回避されます。

結論:

session.persist() と session.save() には両方とも特定の使用例があります。 persist() はトランザクション内の永続性を保証し、長時間実行される会話における不必要な INSERT を回避します。一方、save() は識別子をすぐに割り当てます。これは、生成された値をすぐに使用する場合に役立ちますが、特定のシナリオでは効率が低下する可能性があります。

以上がHibernate では `session.persist()` または `session.save()` を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。