MyBatis 코드를 QueryDSL로 이관하는 작업 중에 여러 개의 테이블의 조인되어 있는 결과를 반환하는 매핑 클래스를 만들어야 했습니다. QueryDSL의 경우 projection이라고 해서 SELECT 절의 조회 대상을 지정하는 방법이 있었습니다. projection 용 record 타입의 dto를 하나 만들어 결과를 매핑하여 처리를 하였는데요. 그 코드를 한 번 소개하려고 합니다. ProjectionProjection은 프로그래밍 및 데이터베이스 분야에서 전체 데이터 중 일부만 선택해 가져오는 작업을 말합니다. 주로 QueryDSL, JPA, SQL 등에서 사용되며, 필요한 데이터만 선택적으로 추출하여 효율적인 데이터 전송 및 처리를 가능하게 합니다. Projection 사용 시 주의 사항 ..
QueryDSL의 타입 안정성Querydsl의 핵심 원칙은 타입 안정성(Type safety) 이다. 도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성하게 된다. 또한, 완전히 타입에 안전한 방법으로 함수/메서드 호출이 이루어진다. QueryDSL은 개발자가 직접 SQL문을 작성하지 않고, Java 코드 기반의 빌더 API를 사용하여 타입 안전한 쿼리를 작성할 수 있도록 도와주는 프레임워크입니다. QClass는 정적 타입 기반으로 생성된 클래스로, 컴파일 시점에 타입 안정성을 보장하며, 쿼리 작성 과정에서 발생할 수 있는 오류를 최소화합니다. 또한 QClass는 엔티티 클래스에서 생성되며, 엔티티와 데이터베이스의 컬럼 이름을 기반으로 쿼리를 작성하기 때문에, 매핑할 프로퍼티 불일..
QueryDSL란?자바 기반의 데이터베이스 질의 언어로, 타입 안전하고 직관적인 방식으로 작성할 수 있도록 지원하는 라이브러리 QType이란?QueryDSL이 제공하는 정적 타입 기반의 쿼리 작성 방식을 구현하기 위한 클래스QType은 보통 Q 접두사가 붙은 엔티티 클래스를 의미하며, 쿼리를 작성할 때 사용되는 타입 안전한 표현식 객체엔티티 클래스를 기반으로 필드와 메서드에 대한 메타 정보를 담고 있어, 쿼리 작성 시 컴파일 시점에 타입 검사 가능 주요 특징타입 안정성: 쿼리를 문자열로 작성하는 대신, 자바 코드로 작성하기 때문에 컴파일 시점에 타입 오류를 검증할 수 있습니다.동적 쿼리 지원: 조건에 따라 동적으로 쿼리를 생성할 수 있어 복잡한 검색 조건을 처리하기에 유용합니다.통합성: JPA뿐만 아니라..