🌱 Spring/JPA
[JPA] JPA 설정 총 정리 : ddl-auto 옵션, 실행 쿼리 보기(SpringBoot 3.x 버전 변경 추가)
an2z
2023. 4. 19. 11:02
데이터베이스 연동
📁 application.yml
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/test
username: sa
password:
driver-class-name: org.h2.Driver
- spring.datasource : DB 연결정보
JPA ddl-auto 옵션
📁 application.yml
spring:
jpa:
open-in-view: false
hibernate:
ddl-auto: create
- open-in-view : osiv 웹 요청이 완료될 때까지 영속성을 가지는 옵션 (켜두면 성능상 안 좋기 때문에 false 사용)
- hibernate.ddl-auto :
- create : 기존 테이블 삭제 후 다시 테이블 생성 (DROP + CREATE)
- create-drop : 테이블 생성 후 종료시점에 테이블 삭제 (CREATE + DROP)
- update : 변경만 반영
- validate : 엔티티와 테이블이 정상 매핑되는지만 확인
- none : 사용하지 않음(실제로는 없는 값이지만 관례상 표시)
실행 쿼리 출력
콘솔에 직접 출력하는 방식
📁 application.yml
spring:
jpa:
properties:
hibernate:
show_sql: true
로그로 출력하는 방식
📁 application.yml
logging.level:
org.hibernate:
SQL: debug
다양한 출력 형태 옵션
📁 application.yml
spring:
jpa:
properties:
hibernate:
format_sql: true
highlight_sql: true
logging.level:
org.hibernate:
type.descriptor.sql: trace
//type.descriptor.sql.BaiscBinder: trace
- format_sql : 실행 쿼리를 한줄이 아니라 가독성있게 포맷팅하여 출력
- highlight_sql : SQL문을 하이라이팅
- type.descriptor.sql : 실행 쿼리에 바인딩되는 파라미터를 출력
스프링 부트 3.x 버전부터 변경사항
스프링 부트 2.x 버전에서는 잘 출력되는데 스프링 부트 3.x 버전에서는 바인딩 파라미터가 출력되지 않아 찾아보니 옵션이 조금 달라졌다고 한다. 현재 3.x 이상 버전을 사용한다면 해당 옵션을 사용해주도록 하자.
📁 application.yml
logging.level:
org.hibernate:
orm.jdbc.bind: trace
외부 라이브러리 사용
GitHub - gavlyukovskiy/spring-boot-data-source-decorator: Spring Boot integration with p6spy, datasource-proxy, flexy-pool and s
Spring Boot integration with p6spy, datasource-proxy, flexy-pool and spring-cloud-sleuth - GitHub - gavlyukovskiy/spring-boot-data-source-decorator: Spring Boot integration with p6spy, datasource-p...
github.com
📂 build.gradle
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
🖥 실행 예시
Reference