SPRING

[Spring]QueryDSL의 Expression이란?

boudle 2025. 4. 25. 13:13

1. Expression의 정의

 

Expression<T>은 SQL에서 "하나의 값"이 될 수 있는 것을 표현하는 QueryDSL의 핵심 인터페이스야.

 

2. Expression의 주요 종류

 

타입설명

Expression<T> 모든 표현식의 최상위 타입
StringExpression 문자열 값 표현 (user.name.like("%abc%"))
NumberExpression<T> 숫자 값 표현 (user.age.add(1), gt(10))
BooleanExpression 논리 표현식 (user.age.gt(20).and(user.status.eq("Y")))
DateExpression<T> 날짜 관련 표현식
SimpleExpression<T> 특별한 타입이 없을 때 사용
StringTemplate / NumberTemplate 직접 SQL 함수나 표현식 지정 시 사용 (STR_TO_DATE(...), YEAR(...))

 

왜 중요할까?

 

QueryDSL에서 Expression이 중요한 이유는 타입 안정성과 동적 쿼리 조립 때문이야

 

타입 안정성

  • user.age.goe("스무살") 같은 코드를 컴파일 단계에서 막아줘
  • SQL문을 자바 코드처럼 안전하게 작성 가능

🔸 동적 쿼리 만들기

  • 조건문에서 BooleanBuilder나 where() 안에 Expression을 조립해서 쓸 수 있어