반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Kafka
- nestjs
- 스프링부트공부
- JPA 공부
- querydsl
- 기술공부
- 알고리즘공부
- 스프링부트
- Axon framework
- JPA스터디
- 자료구조공부
- 자바공부
- Flutter
- nestjs공부
- K8S
- DDD
- 기술면접공부
- 플러터 개발
- 스프링공부
- 코테공부
- JPA
- 스프링
- 스프링 공부
- 프로그래머스
- JPA공부
- 코테준비
- JPA예제
- 카프카
- nestjs스터디
- 플러터 공부
Archives
- Today
- Total
DevBoi
[QueryDSL] QueryDSL 세팅 본문
반응형
1. Build.gradle에 추가
// QueryDSL로 주석 처리한 부분만 신경쓰면된다.
// QueryDSL
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.12-SNAPSHOT'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
// QueryDSL
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
group = 'com.study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// QueryDSL
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
}
// QueryDSL
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
// QueryDSL
sourceSets {
main.java.srcDir querydslDir
}
// QueryDSL
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
// QueryDSL
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
2. Book Entity 생성
package com.practice.demo.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Book {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long bookId;
}
3. Gradle Task compileQueryDSL 실행 및 , build 하위 QBook 엔티티 자동생성 확인
package com.practice.demo.domain;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QBook is a Querydsl query type for Book
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QBook extends EntityPathBase<Book> {
private static final long serialVersionUID = 691710094L;
public static final QBook book = new QBook("book");
public final NumberPath<Long> bookId = createNumber("bookId", Long.class);
public QBook(String variable) {
super(Book.class, forVariable(variable));
}
public QBook(Path<? extends Book> path) {
super(path.getType(), path.getMetadata());
}
public QBook(PathMetadata metadata) {
super(Book.class, metadata);
}
}
4. application.yml
spring:
# DB 연결
datasource:
# 설치된 H2 DB와 연결 URL
url: jdbc:h2:tcp://localhost/~/test
# 접속을 위한 드라이버
driver-class-name: org.h2.Driver
# springboot 2.4 부터는 username이 꼭 있어야합니다. 없으면 에러가 발생합니다.
username: sa
jpa:
# JPA가 수행하는 SQL을 볼 수 있다.
show-sql: true
# 객체를 보고 자동으로 테이블 생성 여부. 생성 - create, 비생성 - none
# 테스트이기 때문에 create로 설정하며
# 실제로는 none 으로 합니다. create이면 기존의 테이블을 전부 밀어버립니다.
hibernate:
ddl-auto: create
# 콘솔 확인 을 위한 always
output:
ansi:
enabled: always
# 파라미터 확인을 위한 trace
logging:
level:
org.hibernate.type: trace
5. QuerydslConfiguration 등록
package com.practice.demo.config;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
@Configuration
public class QuerydslConfiguration {
@Autowired
EntityManager em;
@Bean
public JPAQueryFactory jpaQueryFactory(){
return new JPAQueryFactory(em);
}
}
6. BookRepository
package com.practice.demo.repository;
import com.practice.demo.domain.Book;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@RequiredArgsConstructor
public class BookRepository {
private final JPAQueryFactory queryFactory;
}
우선 QueryDsl에 대한 세팅은 끝났다
다음에 CRUD등 최적화에 대해서 진행을 하고 포스팅을 해보자
반응형
'Develop > [JPA]' 카테고리의 다른 글
[Spring] Mariadb - JPA 세팅 (0) | 2023.07.21 |
---|---|
[JPA] QueryDsl 사용하기 (0) | 2023.05.02 |
JPA orphanRemoval 이란? (0) | 2023.01.09 |
[Jpa] delete 관련 잘 안됨 (0) | 2023.01.09 |
[JPA] 생성시간, 수정시간 자동화 하기 (0) | 2022.12.16 |