3

一意のフィールドを持つエンティティ A があり、そのフィールドは基本的にエンティティを定義します。つまり、等しい場合、エンティティもまったく同じです。

2 つ目のポイントは、その制約に違反したとしても決して例外ではないということです。つまり、ユーザーが重複を入力しようとすることは十分に予想されます。

重複の場合、アプリケーションは既存のエンティティを黙って選択する必要があります。私の質問は、特に As のリストを含むエンティティを保存するときに何をすべきかです。

  • 例外をキャッチしてそこから移動するだけです

DataIntegrityViolationException は、Cascaded persist の場合にどのエンティティが影響を受けたかなど、簡単に処理できる情報を保持していないため、これがそれほど簡単に可能かどうかはわかりません!!!

  • 保存(永続化)する前に確認し、送信されたエンティティを既存のもの(ID セットを持つ)に置き換えます

私はこれをもっと気に入っていますが、単一の挿入ごとに挿入の前に複数の選択 (存在チェック) が行われる可能性があるため、かなりのオーバーヘッドがあります。

より良いアプローチは何ですか?

4

1 に答える 1