오늘은 동적 쿼리랑 정적 쿼리가 뭔지 배웠다
정적 쿼리
정적 쿼리란 검색했을 때 바뀌지 않는 쿼리다
바뀌지 않는 쿼리...?
검색값이 바뀌지 않는 쿼리라고 생각하면 된다.
만약 ORDERS라는 테이블에 가격 컬럼과 주문번호 컬럼이 있다고 가정하고
1번 주문 5000원
2번 주문 8000원
3번 주문 10000원 이라고 가정하면
SELECT * FROM ORDERS
->
order_id | price |
1 | 5000 |
2 | 8000 |
3 | 10000 |
이런 식으로 안에 들어 있는 값에 따라 딱 정해져서 나온다
쿼리의 구조가 항상 동일 하다. 즉 구조가 변경되지 않는다
동적 쿼리
동적 쿼리란 어떤 인자에 의해서 쿼리의 결과가 바뀔 수 있는 쿼리다
만약에 가격이 8000원 이하인 주문만 출력하고 싶다 하면
SELECT * FROM ORDERS WHERE price <= 8000;
order_id | price |
1 | 5000 |
2 | 8000 |
이렇게 출력하게 된다.
내가 8000원 이하라는 인자를 줘서 출력 값이 바뀐 것이다.
인자에 따라서 구조가 바뀔 수 있다.
QueryDSL
QueryDSL은 동적 쿼리를 위해 존재한다고 봐도 과언이 아니다.
의존성이나 뭐 그런 건 딥 다이브 할 때 적을 예정
QueryDSL의 장점
- 쿼리문이 틀리면 실행 시 컴파일 에러를 낸다
- 이게 굉장히 귀한 거다. 쿼리문이 틀린 것도 모르고 런타임 에러가 나면 개발자는 진땀이 흐르겠지만, 컴파일 에러가 나면 실행전에 확일 할 수 있어서 좋다.
- 자바 언어로 작성하기 때문에 컴파일에서 걸러주는게 가능 한 것
- 자바의 언어로 작성 할 수 있어서 자바 언어를 아는 사람이면 이해하기가 쉽다
- 동적 쿼리를 쉽게 작성할 수 있게 해준다
오늘은 이 정도 알고 내일 딥하게 들어갑니다~~~
'TIL' 카테고리의 다른 글
TIL 2023-12-18 QueryDSL Qclass 살펴보기... 삽질 (0) | 2023.12.18 |
---|---|
TIL 2023-12-15 QueryDSL 기본 사용법 (0) | 2023.12.15 |
TIL 2023-12-13 AOP Logging 구현 (0) | 2023.12.13 |
TIL 2023-12-12 왜 Service를 인터페이스와 구현체로 나눌까? (0) | 2023.12.12 |
TIL 2023-12-11 명시적 삭제 컬럼 (0) | 2023.12.11 |