これは、Web アプリケーション/Web サービスを介した会員登録のユース ケースです。電話、住所などの複数のテーブルを見て、メンバーが重複しているかどうかを確認するための複雑なアルゴリズムがあります。アルゴリズムは、メンバーの国によって異なります。したがって、この制限は、主キー/一意キー制約を使用して実装することはできません。
したがって、Javaコードにチェックがあります。しかし、2 つの重複する同時要求がある場合、2 つの Java スレッドはメンバーが存在しないことを認識し、両方がレコードを挿入して重複が発生します。このような重複挿入を防ぐにはどうすればよいですか?
行レベルのロックまたは Hibernate の楽観的同時実行性を使用して、更新を防ぐことができます。このような挿入を防ぐためにテーブル レベルのロックを考えることができますが、更新もブロックするため、アプリケーションのパフォーマンスが制限されます。私が考える別のオプションは、id = 'memberInsert'のレコードでロックテーブルを作成し、JDBCを介してすべての挿入を強制して、このレコードで行レベルのロックを取得することです。
ありがとう