Soft Delete는 데이터베이스에서 레코드를 물리적으로 삭제하지 않고 상태 플래그를 변경해 비활성화 처리하는 방식입니다. 이를 구현한 후 예상대로 동작하는지 철저히 검증하는 테스트 전략이 중요합니다. 이번 글에서는 Soft Delete와 Delete의 내부 동작 방식, 그리고 Soft Delete 구현 시 테스트 코드 작성 방법에 대한 구체적인 전략을 다룹니다. 1. @SQLDelete와 @Where의 내부 동작 방식1. @SQLDelete@SQLDelete는 엔티티가 삭제될 때 Hibernate가 생성하는 기본 DELETE SQL 대신 사용자 정의 SQL을 실행하도록 설정하는 어노테이션입니다. 내부적으로 아래의 단계를 거칩니다.1단계: Hibernate Entity Persister를 설정Hiber..