SpringBoot 3.x 프로젝트에서 QueryDsl 설정 방법을 설명합니다.
의존성 추가
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.9'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.study'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// 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"
}
tasks.named('bootBuildImage') {
builder = 'paketobuildpacks/builder-jammy-base:latest'
}
tasks.named('test') {
useJUnitPlatform()
}
// Querydsl 설정 추가
// clean task가 실행될 때, src/main/generated 디렉토리 모든 파일과 디렉토리 삭제
clean {
delete file('src/main/generated')
}
TestEntity 생성
@Entity
@Getter
@Table(name = "test")
public class TestEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
QueryDsl Q파일 생성
./gradlew compileJava
또는 IntelliJ를 사용중이라면, 우측 gralde > Tasks > other > compileJava 를 클릭 하시면됩니다.
위 방법으로 설정한 디렉토리에 아래와 같이 생성이 됩니다.
QueryDsl 사용 예시
@SpringBootTest
@Transactional
class Querydsl2024ApplicationTests {
@Autowired
EntityManager em;
@Test
void contextLoads() {
TestEntity testEntity = new TestEntity();
em.persist(testEntity);
JPAQueryFactory query = new JPAQueryFactory(em);
QTestEntity qTestEntity = QTestEntity.testEntity;
TestEntity result = query
.selectFrom(qTestEntity)
.fetchOne();
assertThat(result).isEqualTo(testEntity);
assertThat(result.getId()).isEqualTo(testEntity.getId());
}
}
쿼리 파라미터 로그 남기기
SpringBoot 3.x 이상이면 p6spy 1.9.0 이상 버전을 사용해야 합니다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
'QueryDSL' 카테고리의 다른 글
QueryDsl 프로젝션 결과 반환 (0) | 2024.03.25 |
---|---|
QueryDsl 서브쿼리 (0) | 2024.03.20 |
QueryDsl 조인 (0) | 2024.03.20 |
Querydsl 기본 문법 (0) | 2024.03.15 |
QueryDsl 소개 (0) | 2024.03.15 |