私はオブジェクトGeneralKnowledgeTestを持っており、ユーザーがそのテストを受けるたびに更新される多くの統計フィールド(ratingsCount、responsesCount、ratingStars ...)が含まれています(takeTest()->トランザクションメソッド)。
多くのユーザーが同時に同じテストを受けている可能性があるため、楽観的ロック(@version)と、楽観的ロック例外がスローされた場合にtakeTestメソッドを再試行するインターセプターを実装することを考えていました。
したがって、takeTestメソッド内では、常に新しいGeneralKnowledgeTestインスタンス(entityManager.find(testId)など)を取得してから、その統計フィールドを更新します。楽観的な例外がスローされた場合、インターセプターは成功するまでtakeTestメソッドを再試行します。
この手順についてどう思いますか。これは、多くのユーザーが同じテストを受けようとしている可能性のあるシステムに楽観的ロックを実装するための良い方法ですか?
PS。楽観的なロック例外がスローされた場合、企業は警告メッセージを表示することを認めないため、スムーズな実行を可能にするためにインターセプターは必須です...