본문 바로가기

QueryDSL9

QueryDsl 서브쿼리 QueryDsl에서 서브쿼리는 쿼리 내부에 중첩되는 또 다른 쿼리를 의미합니다. 서브쿼리는 주로 복잡한 데이터 집합을 필터링하거나, 특정 조건에 해당하는 데이터를 검색할 때 사용됩니다. QueryDsl을 사용할 때, JPAExpressions 클래스를 활용하여 서브쿼리를 생성할 수 있으며, 이를 통해 select, where 등의 절 내에서 다양한 형태로 사용할 수 있습니다. 아래 쿼리는 회원을 조회하면서 조회 조건을 서브쿼리로 만든 예시입니다. @Test void 서브쿼리_테스트() { List fetch = queryFactory .select(member) .from(member) .join(member.team, team) .where(member.team.name.eq( JPAExpression.. 2024. 3. 20.
QueryDsl 조인 QueryDsl 에서도 JPQL과 유사하게 다양한 종류의 조인을 지원합니다. 주로 사용되는 조인 유형에는 JPQL과 마찬가지로 내부 조인, 외부 조인, 세타 조인, 크로그 조인이 있습니다. 내부 조인 (Inner Join) 내부 조인은 두 테이블에서 조건이 일치하는 행만 반환합니다. 아래 코드는 member, team 간에 일치하는 행만 추출하며 그중 teamA인 행만 조회합니다. @Test void 내부_조인_테스트() { List result = queryFactory .select(member) .from(member) .join(member.team, team) .where(team.name.eq("teamA")) .fetch(); assertThat(result.size()).isEqualTo(.. 2024. 3. 20.
Querydsl 기본 문법 QueryDsl은 SQL 쿼리를 코드 레벨에서 안전하고 직관적으로 작성할 수 있어, 개발자들 사이에서 인기가 높습니다. 요즘은 Springboot + Spring Data JPA + Querydsl은 기본으로 프로젝트를 진행할 정도죠. 아래는 다양한 QueryDsl 문법에 대해서 살펴 보도록하겠습니다. 기본 비교 연산자 QueryDsl은 일반적인 비교 연산자를 메서드 체인 형태로 제공합니다. 다음은 가장 많이 사용되는 비교 연산자들 입니다. eq (equals) "eq" 연산자는 값이 동일한지 비교할 때 사용됩니다. SQL의 "=" 과 동일합니다. QMember qMember = QMember.Member; qMember.username.eq("name"); ne (not equal) "ne" 연산자는 .. 2024. 3. 15.
QueryDsl 소개 QueryDsl은 자바 언어를 사용하여 타입 안전성을 제공하는 SQL과 같은 쿼리를 생성할 수 있게 해주는 프레임워크입니다. 복잡한 쿼리를 작성할 때 SQL 문자열을 직접 작성하는 대신, QueryDsl은 메서드 체인 방식을 사용하여 쿼리를 구성합니다. 이로 인해 컴파일 시점에 타입 체크가 가능해져, 쿼리 관련 버그를 사전에 방지할 수 있게 됩니다. QueryDsl은 JPA, SQL, MongoDB 등 다양한 저장소 기술에 대한 지원을 제공합니다. JPQL의 한계 JPQL은 JPA의 일부로, 데이터베이스가 아닌 엔티티 객체를 대상으로 쿼리를 작성합니다. SQL과 유사한 문법을 사용하지만, 문자열 기반으로 쿼리를 작성해야 하기 때문에 여런 단점이 있습니다. 타입 안정성 부족 : 문자열로 쿼리를 작상하기 때.. 2024. 3. 15.