flag를 사용해 DB에 있는 데이터를 직접 delete쿼리를 통해 삭제하지않고
삭제한 것과 동일한 효과를 가지게 처리할 수 있다.
DB에 있는 컬럼에 isDeleted 값을 추가해 불대수의 형태로 처리를 하면 되는데,
예를 들어
private String name;
private boolean isDeleted;
같이 2개의 컬럼이 있는 테이블에 isDeleted 의 value가 false인 값만 읽어오게 끔 설정해주는 것이다.
다만 repository에서 데이터를 읽어 올 때
List<Name> findAllByDeletedFalse();
이와 같이 설정하는 경우 개발자가 실수해 읽어오면 안되는 데이터까지 읽어오는 경우가 생길 수 있다.
해서 이를 자동으로 처리해주기 위해서는 Entity에 직접 사전설정을 시행하면 간편하게 처리가 가능하다.
Book (Entity)
@Entity
@NoArgsConstructor
@Data
+++++@Where(clause="is_deleted=false")
public class Book extends BaseEntity{
@Id
private String name;
private boolean isDeleted;
.
.
.
}
위와같이 @Where 어노테이션 속성에 clause 옵션을 넣고 flag 컬럼을 false로 선언해주게 되면
isDeleted 값이 false인 DB컬럼만 자동으로 불러와지게 된다.
@Query 활용하기
장점
List<Book> findByCategoryIsNullAndNameEqualsAndCreatedAtGreaterThanEqualAndUpdatedAtGreaterThanEqual(String name, LocalDateTime createdAt, LocalDateTime updatedAt)
카테고리가 Null 이면서 이름은 동일, 생성일은 입력값 이후..
이걸 @Query를 사용하면 가독성을 높일 수 있다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.