https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/
실전! Querydsl - 인프런 | 강의
Querydsl의 기초부터 실무 활용까지 한번에 해결, 본 강의는 자바 백엔드 개발의 실전 코스를 완성하는 마지막 강의 입니다. 스프링 부트와 JPA 실무 완전 정복 로드맵을 우선 확인해주세요. 로드
www.inflearn.com
강의를 들으며 생각 정리
프로젝트 생성
스프링 부트 스타터(https://start.spring.io/) 에서 프로젝트를 생성한다.
dependencies : web, jpa, h2, lombok
간단하게 테스트(애플리케이션 실행, 컨트롤러 테스트 등) 해서 정상 작동하는지 확인한다.
+) 롬복의 경우 다음 링크를 참고해서 설치한다.
스프링 - 롬복(lombok) 라이브러리 설치
롬복 라이브러리는 도메인 클래스에서 getter/setter 메서드와 toString, equals, hashCode 등의 메서드를 애노테이션으로 사용할 수 있도록 해주는 라이브러리이다. 이외에도 몇 가지 기능이 존재하지만,
gksdudrb922.tistory.com
+) IntelliJ에서 Gradle 사용 시 주의점
IntelliJ에서 Gradle 사용시 자바 직접 실행
IntelliJ에서 Gradle 프로젝트 사용시 Gradle 대신에 자바 직접 실행 방법 최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다. 다음과 같이 변경하면 자바로
gksdudrb922.tistory.com
Querydsl 설정과 검증
build.gradle에 주석을 참고해서 querydsl 설정 추가
<build.gradle>
plugins {
id 'org.springframework.boot' version '2.5.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
id 'java'
}
group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
//querydsl 추가
implementation 'com.querydsl:querydsl-jpa'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝
<Querydsl 환경설정 검증>
검증용 엔티티 생성
</entity/Hello>
@Entity
@Getter
@Setter
public class Hello {
@Id @GeneratedValue
private Long id;
}
검증용 Q 타입 생성
Gradle IntelliJ 사용법
Gradle -> Tasks -> other -> compileQuerydsl (더블 클릭)
Gradle 콘솔 사용법
프로젝트 디렉토리 이동 -> ./gradlew compileQuerydsl
Q 타입 생성 확인
build -> generated -> querydsl -> study -> entity -> QHello.java 파일이 생성되어 있어야 함
+) 참고
Q타입은 컴파일 시점에 자동 생성되므로 버전관리(Git)에 포함하지 않는 것이 좋다.
앞서 설정에서 생성 위치를 gradle build 폴더 아래 생성되도록 했기 때문에 git에 포함하지 않도록 했다.
테스트
@Test
void contextLoads() {
Hello hello = new Hello();
em.persist(hello);
JPAQueryFactory query = new JPAQueryFactory(em);
QHello qHello = QHello.hello;
Hello result = query
.selectFrom(qHello)
.fetchOne();
assertThat(result).isEqualTo(hello);
assertThat(result.getId()).isEqualTo(hello.getId());
}
Querydsl Q타입이 정상 동작하는가?
lombok이 정상 동작 하는가?
라이브러리 살펴보기
스프링부트는 기본적으로 라이브러리를 등록하면 의존관계가 필요한 다른 라이브러리들을 모두 가져온다.
프로젝트 생성시 등록한 라이브러리들에 대한 주요 의존 라이브러리들을 살펴보면 다음과 같다.
Querydsl 라이브러리
querydsl-jpa: Querydsl 라이브러리
스프링부트 라이브러리
spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
spring-boot-starter-data-jpa
- spring-boot-starter-aop
- spring-boot-starter-jdbc
- HikariCP 커넥션 풀 (부트 기본)
- hibernate + JPA: 하이버네이트 + JPA
- spring-data-jpa: 스프링 데이터 JPA
spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slf4j
테스트 라이브러리
spring-boot-starter-test
- junit: 테스트 프레임워크(junit5)
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
H2 데이터베이스 설치
h2 데이터베이스는 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면을 제공한다.
version : 1.4.200
+) 현재 사용하는 스프링부트 버전과 맞는 h2 버전은 스프링 매뉴얼을 참고하면 된다.
https://gksdudrb922.tistory.com/110
[Spring] 스프링 부트, 라이브러리 버전 맞추기
현재 사용하는 스프링 부트에서 새로운 라이브러리를 implement 하고 싶을 때, 부트 버전에 맞는 라이브러리 버전을 설치해줘야 정상 동작한다. 스프링 부트에 맞는 라이브러리 버전을 확인하는
gksdudrb922.tistory.com
다운로드 및 설치 방법
H2 데이터베이스 설치
H2 데이터베이스는 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면을 제공한다. 현재 1.4.200 버전(2019 -10-14)을 사용한다. 다운로드 및 설치 다운로드 링크 https://www.h2database.com 윈도우 유저는 Win
gksdudrb922.tistory.com
스프링 부트 설정 - JPA, DB
<application.yml>
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/querydsl
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
logging.level:
org.hibernate.SQL: debug
spring.datasource -> H2 데이터베이스 연결
spring.jpa.hibernate.ddl-auto: create -> 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다.
spring.jpa.properties.hibernate: format_sql -> SQL 출력시 보기 좋게 포맷 후 출력해준다.
logging.level.org.hibernate.SQL : debug -> logger를 통해 하이버네이트 실행 SQL을 남긴다
+) 참고: 모든 로그 출력은 가급적 로거를 통해 남겨야 한다.
+) 쿼리 파라미터 로그 남기기
https://gksdudrb922.tistory.com/111
[JPA] 쿼리 파라미터 로그 남기기
기본적으로 JPA에서 쿼리를 화면에 출력할 때, 쿼리 파라미터가 '?'로 찍힌다. insert into member (username, id) values (?, ?) 파라미터 값을 로그로 남기는 법을 알아보자. 1. 설정 정보 간단한 방법으로 appl.
gksdudrb922.tistory.com
'java > querydsl' 카테고리의 다른 글
[Querydsl] 실무 활용 - 스프링 데이터 JPA와 Querydsl (0) | 2021.06.06 |
---|---|
[Querydsl] 실무 활용 - 순수 JPA와 Querydsl (0) | 2021.06.04 |
[Querydsl] 중급 문법 (1) | 2021.06.03 |
[Querydsl] 기본 문법 (0) | 2021.06.02 |
[Querydsl] 예제 도메인 모델 (1) | 2021.06.01 |