인프런 커뮤니티 질문&답변

코큐로큐님의 프로필 이미지
코큐로큐

작성한 질문수

실전! Querydsl

동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용

predicate 보다 booleanExpression을 선호하는 이유가 뭔가요?

작성

·

1K

0

booleanExpression은 and, or 을 조합해서 새로운 BooleanExpression을 만드는것과 같이 메서드를 재사용할 수 있고 null을 받으면 무시해서 npe를 방지할 수 있다라고 하는 글을 봤습니다. 

근데 predicate는 and, or을 조합하지 못한다는게 이해가 안됩니다.  정확히 어떤 상황을 말하는 것인지 여쭤봐도 될까요?

답변 3

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. DONGHO NAM님

다음과 같이 코드를 작성해보시면 eq(member).and()의 and() 부분에서 컴파일 오류가 발생하는 것을 확인할 수 있습니다.

@Test
void testQuery() {

JPAQueryFactory query = new JPAQueryFactory(em);
QMember member = QMember.member;
query.select(member)
.from(member)
.where(eq(member).and(...));

}

private Predicate eq(QMember member) {
return member.salary.eq(10);
}

감사합니다.

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. DONGHO NAM님

답변을 드리고 싶은데, 어떤 문맥에서 이야기한 것인지 이해가 필요합니다.

강의 내용의 몇 분 부터 해당 내용을 설명했는지 남겨주시겠어요?

0

코큐로큐님의 프로필 이미지
코큐로큐
질문자

4:00분경에 booleanExpression은 나중에 composition이 가능하다고 말씀하셔서 제가 따로 검색해서 찾아보니까 우아한 형제들의 Querydsl사용법이라는 글에서 boolean expression은 and, or 을 조합해서 재사용할 수 있어서 편리한 점이 있다라는 글을 찾았습니다. 그런데 강의영상에서 predicate를 사용하여도 where절에서 and를 사용하여도 별 문제 없이 동작해서 질문드립니다. 아래는 제가 따로 찾아본 블로그 url 입니다. 

감사합니다.

https://velog.io/@youngerjesus/%EC%9A%B0%EC%95%84%ED%95%9C-%ED%98%95%EC%A0%9C%EB%93%A4%EC%9D%98-Querydsl-%ED%99%9C%EC%9A%A9%EB%B2%95

코큐로큐님의 프로필 이미지
코큐로큐

작성한 질문수

질문하기