アプリケーションレベルで一意のキー制約があるテーブルでのデータ挿入/更新を処理する際のベストプラクティスは何ですか?これらは私が思いついたものです:
1.データを挿入する前にテーブルに対してクエリを実行して、データが制約に違反するかどうかを確認します。
長所
- フルコントロールできるので、DBMS固有のエラーメッセージを処理する必要はありません。
- データ整合性チェックの追加レイヤー
短所
- ほとんどの場合、制約違反は発生しないため、パフォーマンスが低下する可能性があります。
- 重複データのクエリを実行している間は、テーブルをロックする必要があります。
2.何もしません。テーブルを更新して、何がうまくいくかを確認します。
長所
- 単純!
- テーブルを更新するたびに追加のクエリを実行する必要がないため、全体的に高速になります。
短所
- 検証ルーチンはデータベース層によって異なります。
- データが固定されない場合は、スタックトレースを調べて、原因を特定する必要があります。
より広く受け入れられているソリューションはどれですか?これらに代わるものはありますか?
私はJava、JPA、Hibernate、SpringBTWを使用しています。フレームワーク固有の提案も歓迎します。
ありがとう!