우선, 제가 아는 지식내에서는 exist 메소드를 사용함으로 얻는 이점이 없으므로 작성한 내용입니다.
1
2
3
4
5
6
7
8
|
public Boolean memberExists(Long memberId) {
Integer findMember = queryFactory
.selectOne()
.from(member)
.where(member.memberId.eq(memberId))
.fetchFirst();
return findMember != null;
}
|
cs |
위처럼 fetchFirst() 를 이용하자. limit(1) 과 동일한 개념이며 사용시 원하는 결과를 찾을경우 쿼리가 종료되기 때문에 성능에 도움이 된다.
exist()를 사용할경우 select에 count(1) 의 결과를 받아 > 0 조건을 통해 조건을 반환한다.
그렇게 되면 원하는 결과를 찾아도 DB는 계속 검색을 진행하게 되므로 성능에 문제가 있을 수 있다.
그리고 selectOne 에서는 검색 결과가 없을경우 null 이 반환되므로 return 문에서 null 을 검사하여야한다.
반응형