データベースにhigh_scoresテーブルがあり、2つの値があります。
player_id
highest_score
新しいハイスコアを保存するリポジトリメソッドが必要です。非常に単純なもののために、楽観的なロック再試行ロジックでコードを汚したくありません。私が実行したいのは基本的にこの行です:
update high_scores
set highest_score = :new_high_score
where player_id = :player_id
and highest_score <= :new_high_score
これでほとんどの場合、私の目標は問題なく達成されますが、ユーザーがハイスコアを持っていない場合は、ハイスコアを作成することについても心配する必要があります。高いスコアを低いスコアで上書きしないようにする必要がありますが、このテーブルに必要なロックはそれだけです。
hibernateにこのようなことをするように依頼する方法はありますか、それともカスタムSQLに頼る必要がありますか?