개요
이번 글에서는 JPA에서 findBy 매서드를 매개변수 없이 사용하는 방법에 대해 이야기해보려고 한다.
매개변수 없이 사용하면 좋은 점?

예를 들어 위와 같은 데이터가 있고 "삭제되지 않은" 데이터들을 불러올 때 우리는 다음과 같이 코드를 작성할 수 있다.
List<BoardMenu> findAllByDeleteYn(boolean active);
이때 서비스 로직에서 active라는 매개변수값을 false로 넘겨주며 원하는 결과를 얻을 수 있을 것이다.
위와 같은 매서드는 삭제된 게시물만 조회하는 기능이 있는 운영툴과 같은 환경에선 확장성 있는 구조로 쓰일 수 있겠지만 사용자들이 직접 이용하는 환경에서는 삭제된 게시물이 노출되는 불상사가 발생할 수 있다.
우리는 "삭제되지 않은" 데이터들만 보여주길 원하는데 active라는 매개변수에는 true, false 두 개의 값이 모두 들어갈 수 있는 문제가 발생하기 때문이다.
매개변수를 final 필드로 지정한다 해도 매개변수가 변경될 가능성은 충분히 존재할 수 있다.
이때는 다음과 같은 코드를 사용하자
List<BoardMenu> findAllByDeleteYnFalse();
다음과 같은 코드를 사용함으로써 Where절의 파라미터를 결정짓는 요소는 findAllByDeleteYnFalse라는 매서드명 하나가 된다.
즉, 매개변수로 인해 쿼리문에 들어가는 파라미터의 변경 가능성을 없애고 파라미터를 매서드명을 통해 직접 지정한 것이다.
결과 또한 우리가 원하는 "삭제되지 않은" deleteYn = false인 값을 정상적으로 조회할 수 있다.

'Spring' 카테고리의 다른 글
| [Spring] Spring Data JPA에서 @ManyToOne 관계 N + 1 문제 해결하기 (0) | 2023.07.31 |
|---|---|
| [Spring] JPA NativeQuery 사용시 @Param으로 객체 사용하기 (0) | 2022.12.16 |
| [Spring] SpringBoot에서 환경에 따른 Properties 사용하기(Spring Profiles) (0) | 2022.11.12 |
| [Spring] SpringBoot 프로젝트 WAS 배포 후 @PathVariable을 사용하는 Controller에서 MethodArgumentTypeMismatchException이 발생할 때 해결하는 방법 (0) | 2022.11.05 |
| [Spring] SpringBoot에서 에러 페이지 설정하기 (2) | 2022.09.26 |