[Querydsl] sql함수(Sql functions)
📌 들어가며 이번 글에서는 QueryDSL에서 SQL 함수를 활용하는 법을 정리한다. SQL Function이란? DB가 제공하는 다양한 함수를 QueryDSL에서 쓸 수 있게 해주는 기능. SQLExpressions 클래스로 활용한다. 1. 문자열 함수 // concat: 문자열 합치기 → "이름(나이)" SQLExpressions...
📌 들어가며 이번 글에서는 QueryDSL에서 SQL 함수를 활용하는 법을 정리한다. SQL Function이란? DB가 제공하는 다양한 함수를 QueryDSL에서 쓸 수 있게 해주는 기능. SQLExpressions 클래스로 활용한다. 1. 문자열 함수 // concat: 문자열 합치기 → "이름(나이)" SQLExpressions...
📌 들어가며 이번 글에서는 QueryDSL의 서브쿼리를 정리한다. 서브쿼리란? 하나의 SQL 문 안에서 또 다른 SQL 문을 실행하는 것. 복잡한 조건을 간단하게 처리할 때 쓴다. 💡 서브쿼리에는 별칭이 다른 Q-Type이 필요하다. (QMember subMember = new QMember("subMember")) 1. 단일...
📌 들어가며 이번 글에서는 QueryDSL의 Projections를 정리한다. Projections란? 쿼리 결과를 원하는 형태(단일 값·DTO·Tuple)로 가져오는 기능. 엔티티 전체가 아니라 필요한 필드만 뽑아올 수 있다. 1. 기본 Projection (단일 값) List<String> memberNames = qu...
📌 들어가며 이번 글에서는 QueryDSL의 case 표현식을 정리한다. case 표현식이란? SQL에서 조건에 따라 값을 다르게 반환하는 구문. QueryDSL에서도 데이터에 따라 다르게 처리할 때 사용한다. 1. 간단한 case List<String> results = queryFactory .select(mem...
📌 들어가며 이번 글에서는 QueryDSL의 정렬을 정리한다. QueryDSL에서 정렬은 두 가지 방식이 있다. orderBy: DB 단에서 정렬 (JPQL 유사) Comparator(sort): 가져온 뒤 자바에서 정렬 (Java 8 스트림) 1. orderBy — DB 정렬 List<Product&g...
📌 들어가며 이번 글에서는 QueryDSL로 페이징하는 방법을 정리한다. 페이징이란? 데이터를 일정량씩 나눠 가져오는 것. 전체를 한 번에 로딩하지 않고 필요한 만큼만 가져와 성능을 최적화한다. 1. offset과 limit List<Product> products = queryFactory .selectFrom(p...
📌 들어가며 이번 글에서는 QueryDSL의 조인(Join)을 정리한다. 여러 테이블 간 관계를 활용해 데이터를 연결하는 다양한 방식을 살펴본다. 종류 설명 Inner Join 양쪽에 일치하는 것만 Left Join 왼쪽 ...
📌 들어가며 이번 글에서는 QueryDSL의 집계 함수를 정리한다. 집계 함수란? 여러 행의 데이터를 하나로 합치거나, 조건에 따라 계산하는 함수. 데이터 분석·통계에 필수다. 1. count long productCount = queryFactory .selectFrom(product) .where(product.pr...
📌 들어가며 이번 글에서는 QueryDSL에서 쿼리 결과를 가져오는 fetch 계열 메소드들을 정리한다. 상황에 맞는 fetch를 골라 쓰는 것이 중요하다. 1. fetch 메소드의 종류 메소드 반환 특징 fetch() List<T> ...
📌 들어가며 이번 글에서는 QueryDSL의 핵심인 Q-Type을 정리한다. QueryDSL이란? 자바 기반의 오픈소스 SQL 프로젝션 라이브러리로 JPA·Hibernate를 지원한다. Q-Type이란? 엔티티의 필드를 정적 상수로 선언한 클래스. 쿼리 작성 시 타입 안전성을 제공한다. 1. Q-Type 사용하기 Product 엔티티...