Backend/Database
[JPA] 반복(중복)되는 WHERE 조건 제거하기
mopil
2023. 3. 11. 20:33
반응형
소프트 딜리트를 구현하다 보면 테이블의 칼럼을 하나 추가해서 상태값으로 삭제인지, 아닌지를 판별한다.
예를 들어서 Archive라는 테이블이 삭제되면 visibility라는 칼럼의 true / false 상태로 이를 구분한다.
이후 전체조회를 할 때 삭제된 레코드들은 SELECT 하면 안 되므로, visibility=true 조건을 WHERE 조건에 걸어줘야 할 것이다.
도메인이 많아질수록, 소프트 딜리트를 구현한 테이블에 전체 조회 로직이 많을 수록 쿼리는 점점 길어질 것이다.
# 해결방법
엔티티 클래스에 @Where 어노테이션을 달아주면, 조회를 할 때 해당 조건을 타고 가져오게 된다.
clause 부분에 WHERE 조건을 탈 조건문을 문자열로 넣어주면된다.
나는 Visibility라는 클래스로 변수화를 해도 좋다.
public class Visibility {
public static final String TRUE = "visibility = true";
public static final String FALSE = "visibility = false";
}
반응형