Reward 엔티티가 수정(update) 되거나 삭제(delete) 되지 않도록 관리합니다. 이를 위해 엔티티 리스너에 **PreUpdate
**와 PreRemove
어노테이션을 추가하여, 엔티티의 수정이나 삭제 시도 시 예외를 발생시키고 처리를 차단합니다.
데이터의 신뢰성 검증은 previous_reward_sum
속성을 활용합니다. 이 속성은 이전 레코드의 reward_sum 값을 참조하여 현재 레코드의 변경을 추적합니다.
previous_reward_sum
+ received_reward_amount
previous_reward_sum
- spent_reward_amount
계산된 총액은 **reward_sum
**에 저장됩니다. 이후 레코드 새로 생성 마다, 동일 user_id 를 가진 가장 최근에 생긴 **reward_sum
**과 새로 생성된 레코드의 **previous_reward_sum
**을 비교합니다. 두 값이 일치하면 레코드 생성이 승인되고, 불 일치하면 에러가 발생하여 생성이 차단됩니다. 이러한 체인 구조는 연쇄적 데이터 검증을 가능하게 하여 보안을 강화할 수 있고 이전 값만 비교하면 되기 때문에 처리 비용도 절감할 수 있습니다.