Querydsl Expression
🧩 Querydsl Expression
정의
Expression은 Querydsl에서select,from,where절에 사용되는 표현식의 기본 타입이다. 쿼리의 조건, 정렬, 결과 값을 객체로 다루기 위한 기반이 된다.
Querydsl은 이 표현식들을 조합해 타입 안전한 쿼리를 구성한다.
🧩 역할
- 쿼리의 조건과 결과를 표현한다
- 타입별 표현식을 제공한다
- Querydsl의 조합 가능한 쿼리 구조를 만든다
- 동적 쿼리를 표현식 단위로 분리할 수 있게 한다
🧩 구조

🧩 종류
| 타입 | 기능 |
|---|---|
NumberExpression |
숫자 데이터 타입 표현식 |
StringExpression |
문자열 데이터 타입 표현식 |
BooleanExpression |
참/거짓 조건 표현식 |
ComparableExpression |
비교 가능한 타입 표현식 |
DateTimeExpression |
날짜/시간 타입 표현식 |
EntityPath |
엔티티 타입 표현식 |
🛠 사용 예시
List<FileLink> result = queryFactory
.selectFrom(qFileLink)
.where(
Expressions.stringTemplate(
"TO_DATE({0}, 'YYYY-MM-DD HH24MISS')",
Expressions.stringTemplate("CONCAT({0}, '235959')", qFileLink.useExpiryDate)
).loe(DateTime.now().toString("YYYY-MM-DD HH24MISS"))
)
.fetch();
BooleanExpression과 연결
public BooleanExpression isActive(Boolean active) {
return active != null ? qUser.active.eq(active) : null;
}
🧩 특징
- 텍스트가 아니라 객체로 쿼리 요소를 다룬다
- 타입별로 표현식이 분리되어 있다
Expressions와 함께 자주 사용된다- 서브쿼리, 조건식, 템플릿 표현식에 활용된다
⚠️ 주의사항
Expression계열은 Querydsl 전용 개념이다.- 타입 이름은 대문자 시작의 표준 클래스명을 사용하는 것이 맞다.
- 템플릿 표현식은 DB 함수와 결합되므로 문법을 신중히 작성해야 한다.
- 단순 조건은 별도 메서드로 분리하면 재사용성이 좋아진다.
📌 정리
Querydsl Expression은 쿼리를 객체로 표현하는 기반 타입이다.- 타입별 표현식과 템플릿 표현식을 조합해 복잡한 쿼리를 만든다.
Expressions,BooleanExpression,OrderSpecifier와 함께 보면 이해가 쉽다.
댓글남기기