spring

QueryDSL 설정하기

heejunp 2025. 1. 18. 22:49

개발 환경

  • spring boot 3.4.0
  • gradle 8.10.0

🐘build.gradle

dependencies {
	// querydsl
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

Qclass 생성하기

gradle - Tasks - other - compilJava

QueryDSLConfig.java

import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QueryDSLConfig {

    @Bean
    JPAQueryFactory jpaQueryFactory(EntityManager em) {
        return new JPAQueryFactory(em);
    }
}

ExampleRepository.java

import org.springframework.data.jpa.repository.JpaRepository;

public interface ExampleRepository extends JpaRepository<Entity, Long>, JPACustomRepository {
}

ExampleCustomRepository.java

public interface ExampleCustomRepository {
    // 필요한 Method 작성...
}

ExampleCustomRepositoryImpl.java

import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.stereotype.Repository;
import lombok.RequiredArgsConstructor;

@Repository
@RequiredArgsConstructor
public class ExampleCustomRepositoryImpl implements ExampleCustomRepository {

    private final JPAQueryFactory queryFactory;

	// Override Method 구현...
}