4

私は Hibernate を使用しており、親オブジェクトからその子へのカスケード DELETE 操作を数回実装する必要がありました。次の 2 つのオプションを使用しました。

1 つのオプションは、親オブジェクトで getChildren() を公開し、返された子のコレクションに子を追加し、Hibernate が DELETE を自動的にカスケードできるようにすることです。このオプションの欠点は、Hibernate カスケードをサポートするためだけに使用されるにもかかわらず、getChildren() コレクションを公開する必要があることです。

もう 1 つのオプションは、ParentDao.delete(parent) で子を手動で検索して削除することです。このオプションの欠点は、より多くのカスタム コードです。ただし、バッチ削除ステートメントを使用すると、このオプションのパフォーマンスが向上する場合があります。

主にどのようなアプローチを使用しますか? 他の長所と短所はありますか?

4

1 に答える 1

3

主にどのようなアプローチを使用しますか? 他の長所と短所はありますか?

実際の構成関係がある場合 (および比較的少数のレコードを削除したい場合) にカスケードを使用します。ただし、削除を実装するためだけにそのようなリレーションを導入するのではなく、クエリ (バルク HQL DELETE またはネイティブ SQL クエリ) を使用します。私の経験では、必要な追加コードの「コスト」を上回るメリットがあります (いずれにせよ小さいものです)。

于 2010-09-25T20:54:09.393 に答える