Browse Source

feat: querydsl 기능 적용

merge하는 단계로 app 영역에도 추가 하였으나
해당 기능은 data 영역에서만 사용하도록 하는 것을 권장함.
pull/2/head
지대한 8 months ago
parent
commit
c736566683
  1. 23
      app/kac-app/build.gradle
  2. 20
      app/kac-app/src/main/java/kr/co/palnet/kac/app/config/QueryDslConfig.java
  3. 13
      app/kac-app/src/main/java/kr/co/palnet/kac/app/ping/controller/PingController.java
  4. 19
      app/kac-app/src/main/java/kr/co/palnet/kac/app/ping/controller/QueryRepository.java
  5. 3
      build.gradle
  6. 24
      data/com/build.gradle
  7. 10
      data/com/src/test/java/kr/co/palnet/kac/data/com/DataComApplicationTestApp.java
  8. 1
      data/com/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java
  9. 2
      web/api-com/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java

23
app/kac-app/build.gradle

@ -9,6 +9,29 @@ dependencies {
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
implementation "$boot:spring-boot-starter-data-jpa"
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"
implementation project(":web-api-com")
// TDOO: ...
compileOnly project(":data-com")
}
// querydsl
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile
sourceSets {
main.java.srcDir(querydslDir)
}
tasks.withType(JavaCompile) {
options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
}
clean {
delete file(querydslDir)
}

20
app/kac-app/src/main/java/kr/co/palnet/kac/app/config/QueryDslConfig.java

@ -0,0 +1,20 @@
package kr.co.palnet.kac.app.config;
import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class QueryDslConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}

13
app/kac-app/src/main/java/kr/co/palnet/kac/app/ping/controller/PingController.java

@ -1,8 +1,14 @@
package kr.co.palnet.kac.app.ping.controller;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Locale;
@Slf4j
@RestController
public class PingController {
@ -10,4 +16,11 @@ public class PingController {
public String ping() {
return "pong";
}
@GetMapping("/test")
public String test() {
Locale locale = LocaleContextHolder.getLocale();
log.info(locale.toString());
return locale.toString();
}
}

19
app/kac-app/src/main/java/kr/co/palnet/kac/app/ping/controller/QueryRepository.java

@ -0,0 +1,19 @@
package kr.co.palnet.kac.app.ping.controller;
import com.querydsl.jpa.impl.JPAQueryFactory;
import kr.co.palnet.kac.data.com.model.QComArcrftBas;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
@Slf4j
@RequiredArgsConstructor
@Repository
public class QueryRepository {
private final JPAQueryFactory query;
public void test() {
QComArcrftBas bas = QComArcrftBas.comArcrftBas;
query.select(bas).from(bas).fetch();
}
}

3
build.gradle

@ -34,6 +34,9 @@ subprojects {
runtimeClasspath {
extendsFrom developmentOnly
}
compileOnly {
extendsFrom annotationProcessor
}
}
dependencies {

24
data/com/build.gradle

@ -1,7 +1,29 @@
dependencies {
implementation("$boot:spring-boot-starter-data-jpa")
implementation "$boot:spring-boot-starter-data-jpa"
// compileOnly "com.querydsl:querydsl-jpa:5.0.0:jakarta"
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"
testRuntimeOnly("com.h2database:h2")
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile
sourceSets {
main.java.srcDir(querydslDir)
}
tasks.withType(JavaCompile) {
options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
}
clean {
delete file(querydslDir)
}

10
data/com/src/test/java/kr/co/palnet/kac/data/com/DataComApplicationTestApp.java

@ -24,4 +24,14 @@ public class DataComApplicationTestApp {
public class Config {
}
// @Configuration
// public class QueryDslConfig {
// @PersistenceContext
// private EntityManager entityManager;
//
// @Bean
// public JPAQueryFactory jpaQueryFactory() {
// return new JPAQueryFactory(entityManager);
// }
// }
}

1
data/com/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java

@ -3,6 +3,7 @@ package kr.co.palnet.kac.data.com.service;
import kr.co.palnet.kac.data.com.domain.ComCdBas;
import kr.co.palnet.kac.data.com.domain.ComCdGroupBas;
import kr.co.palnet.kac.data.com.domain.ComCdLangCtg;
import kr.co.palnet.kac.data.com.domain.QComCdBas;
import kr.co.palnet.kac.data.com.repository.ComCdBasRepository;
import kr.co.palnet.kac.data.com.repository.ComCdGroupBasRepository;
import kr.co.palnet.kac.data.com.repository.ComCdLangCtgRepository;

2
web/api-com/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java

@ -2,6 +2,8 @@ package kr.co.palnet.kac.api.v1.com.code.controller;
import java.util.List;
import kr.co.palnet.kac.data.com.domain.ComCdBas;
import kr.co.palnet.kac.data.com.domain.QComCdBas;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;

Loading…
Cancel
Save