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

gusdn85554님의 프로필 이미지
gusdn85554

작성한 질문수

실전! Querydsl

동적 쿼리 - Where 다중 파라미터 사용

BooleanBuilder, BooleanExpression 차이

작성

·

2K

1

영한님 안녕하세요 작년 7월부터 스프링 공부했는데 어느새 여기까지 왔네요,, 좋은 강의 덕분에 재밌게 잘 공부하고 있습니다

.

BooleanBuilder와 BooleanExpression 차이를 알고 싶어서 다이어그램을 보았습니다.

Expression을 상속하고 있는 클래스더라구요

그래서  "도대체 무슨 차이지"라고 생각이 들어 찾아보았습니다.

 동욱님 블로그 를 참고하고나서 제 생각엔 BooleanBuilder는 where 조건에 BooleanBuilder 객체 자체를 넣으니 코드를 이해하는데 가독성이 떨어진다고 생각했습니다.(조건들이 하나의 BooleanBuilder에 있기 때문)

.

BooleanExpression을 사용하면 여러 조건들을 각각 BooleanExpression을 반환하는 메서드를 만들어 가독성 좋게 조건들을 나열할 수 있고, 조합을 할 수 있다라고 생각했습니다. 

하지만 옛날에 영한님이 Q&A에 대한 을 보았을 때, BooleanBuilder로도 충분하게 가독성 좋은 코드를 만들 수 있더라구요

.

그래서 제 생각엔 두 가지의 차이점이 보였습니다

.

1. BooleanExpression은 null일 경우 그냥 null만 반환해도 되지만, BooleanBuilder는 항상 BooleanBuilder라는 객체를 생성하여 반환해야하기 때문에 리소스 측면에서 낭비이다?

2. BooleanExpression은 ","을 이용해서 where조건에 여러 BooleanExpression의 조건들을 나열할 수 있지만, BooleanBuilder는 where에 나열할 수 없다?

정도라고 생각이 드는데, 아직까지 뭐가 확실하게 다른거지라는 생각이 들어 질문드립니다!

 

감사합니다

답변 1

2

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

안녕하세요. gusdn85554님

BooleanExpression은 member.age.eq(xx) 같은 경우처럼 표현식의 결과로 반환되는 값입니다.

BooleanBuilder는 이런 표현식을 모아서 사용할 수 있도록 도와주는 도구로 이해하시면 됩니다.

감사합니다.

gusdn85554님의 프로필 이미지
gusdn85554

작성한 질문수

질문하기