고아제거속성 2, @Query 사용하기/ 패스트캠퍼스 챌린지 22일차

망고쥬스·2021년 11월 22일
0

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 활용하기

장점

  1. Query Method의 가독성을 높일 수 있다
List<Book> findByCategoryIsNullAndNameEqualsAndCreatedAtGreaterThanEqualAndUpdatedAtGreaterThanEqual(String name, LocalDateTime createdAt, LocalDateTime updatedAt)

카테고리가 Null 이면서 이름은 동일, 생성일은 입력값 이후..

이걸 @Query를 사용하면 가독성을 높일 수 있다.


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3FVdhDa

profile
#newbieDeveloper #since 2021.04.06

0개의 댓글

관련 채용 정보