Backend/Database

[JPA] 반복(중복)되는 WHERE 조건 제거하기

mopil 2023. 3. 11. 20:33
반응형

소프트 딜리트를 구현하다 보면 테이블의 칼럼을 하나 추가해서 상태값으로 삭제인지, 아닌지를 판별한다.

 

예를 들어서 Archive라는 테이블이 삭제되면 visibility라는 칼럼의 true / false 상태로 이를 구분한다.

 

이후 전체조회를 할 때 삭제된 레코드들은 SELECT 하면 안 되므로, visibility=true 조건을 WHERE 조건에 걸어줘야 할 것이다.

 

이런식으로 where and조건으로 계속 visibility=true 조건을 걸어줘야하니까 중복이 발생한다.

 

도메인이 많아질수록, 소프트 딜리트를 구현한 테이블에 전체 조회 로직이 많을 수록 쿼리는 점점 길어질 것이다.

 

 

# 해결방법

엔티티 클래스에 @Where 어노테이션을 달아주면, 조회를 할 때 해당 조건을 타고 가져오게 된다.

 

clause 부분에 WHERE 조건을 탈 조건문을 문자열로 넣어주면된다.

나는 Visibility라는 클래스로 변수화를 해도 좋다.

 

public class Visibility {
    public static final String TRUE = "visibility = true";
    public static final String FALSE = "visibility = false";
}

 

반응형