20.5.4. 一括削除


コレクションの要素を一つずつ削除するのは極めて非効率的になることがあります。Hibernate は新しい空のコレクションの場合( list.clear() を呼び出した場合など)はこれをすべきでないことを知っています。この場合は、Hibernate は DELETE を一回発行します。
サイズ20のコレクションに要素を1つ追加し、それから二つの要素を削除するとします。Hibernate は、コレクションが bag でなければ、一つの INSERT 文と二つの DELETE 文を発行します。これは確かに望ましい動作です。
しかし、18個の要素を削除して2つを残し、それから3つ新しい要素を追加するとします。このとき二つの方法があります。
  • 18行を順に削除して、3行を追加する
  • 一回のSQL DELETE でコレクション全体を削除し、5つの要素すべてを一つずつ挿入します。
Hibernate はこの場合に2番目の方法が早いことはおそらく分からないでしょう。このような振る舞いはデータベースのトリガなどを混乱させる場合があるため、Hibernateがここまで直感的なのはおそらく好ましくありません。
幸いにも、元のコレクションを捨て(つまり参照をやめて)、現在の要素をすべて持つ新しいコレクションのインスタンスを返すことで、いつでもこの動作(2番目の戦略)を強制することが出来ます。
一括削除は inverse="true" をマッピングしたコレクションに適用しません。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る