반응형
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'
이 외부 라이브러리는 시스템 자원을 사용하므로, 운영 시스템에 적용하려면 성능 테스트가 필수이다.
반응형