//Querydsl buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.2.3' id 'io.spring.dependency-management' version '1.1.4' } group = '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-web' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.h2database:h2' 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:5.0.0:jakarta' annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" //swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' } tasks.named('test') { useJUnitPlatform() } //Querydsl 설정부 def generated = 'src/main/generated' //querydsl QClass 파일 생성 위치를 지정 tasks.withType(JavaCompile) { options.getGeneratedSourceOutputDirectory().set(file(generated)) } //java source set 에 querydsl QClass 위치 추가 sourceSets { main.java.srcDirs += [ generated ] } //gradle clean 시에 QClass 디렉토리 삭제 clean { delete file(generated) }
Refresh Gradle Project
gradle clean
gradle build
기본값 타입 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적이 가능하다. 예시 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 ...
JPA와 API 결론부터 말하면 API에서는 엔티티 그대로 반환하면 안 된다. 엔티티는 스펙이 변경될 가능성이 크기 때문이다. 또한 애플리케이션 내부 로직이 노출될 위험성도 존재하기 떄문이라는 이유도 있다. v1 - 엔티티를 직접 노출 엔티티를 그대로 반환하기 때문에 API에서 사용하기에는 좋지 않은 방법 지연 로딩에 의해...
컬렉션 조회 이번 게시글에서는 엔티티 내부에 있는 컬렉션 필드의 조회를 최적화하는 방법에 대해서 알아본다. 컬렉션 필드를 쓰면 쿼리가 많이 나가서 최적화를 상당히 신경써야 한다. v1 - 엔티티를 직접 노출 엔티티를 그대로 반환하기 때문에 API에서 사용하기에는 좋지 않은 방법 지연 로딩에 의해 프록시로 존재하는 부분을 강제로...
[QueryDSL] QueryDSL에 대하여
[QueryDSL] 기본 문법
새 버전의 콘텐츠를 사용할 수 있습니다.