공부/JPA

Query DSL - 스프링 부트 설정

데부한 2022. 8. 5. 20:56
반응형

출처 : 인프런 실전! QueryDSL

Query DSL게시글은 대부분 인프런의 김영한님의 강의인 '실전! Query DSL' 기반으로 내용을 정리했습니다.

 

스프링 부트 설정

  • application.yml 생성 및 설정

src/resources에 있던 application.properties 파일을 지우고 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:
#       show_sql: true
        format_sql: true

logging.level:
  org.hibernate.sql: debug
#    org.hibernate.type: trace

참고로 앞의 공백이 레벨 같은 개념이므로 잘 맞춰줘야 한다.

  • ddl-auto : create
    • 애플리케이션 로딩 시점에 DB에 만들어진 엔티티를 모두 drop처리하고 다시 새로 만드는 옵션
  • show_sql : true
    • 콘솔에 출력되는 sql을 가독성 좋게 System.out.println()으로 출력해준다.
  • org.hibernate.sql : debug 
    • 하이버네이트에서 logger를 통해 하이버네이트 실행 SQL을 남긴다.
    • 참고로 모든 로그 출력은 가급적 로거를 통해 남겨야 한다. 그러므로 show_sql은 주석처리.
insert 
into
    hello
    (id) 
values
    (?)
    

select
    hello0_.id as id1_0_ 
from
    hello hello0_

 

전에 만들었던 테스트 코드를 실행시킨 후 DB를 보면 데이터가 들어가 있지 않는다. TEST에서 Transactional 애노테이션만 사용했기 때문에 기본적으로 롤백을 해버린다. 그래서 @Commit 애노테이션을 추가해줘야 한다.

@SpringBootTest
@Transactional
@Commit
class QuerydslApplicationTests {

 

 

쿼리 파라미터 로그 남기기

위 SQL이 출력된 파라미터 부분에 물음표(?)가 있는 걸 볼 수 있다. 이 물음표 대신 진짜 값을 보고싶다면 아래 외부 라이브러리를 사용하면 된다.

  • build.gredle
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'

이 외부 라이브러리는 시스템 자원을 사용하므로, 운영 시스템에 적용하려면 성능 테스트가 필수이다.

반응형