728x90
이전 포스팅에서 Entity 코드를 어떻게 작성하는지와 관계 설정을 어떻게 수행하는지 알아보았다.
Entity는 database의 table과 매핑되는 관계이기 때문에 실제 DB에 연결해 결과가 올바르게 나오는지 확인해야 한다.
Spring 프로젝트에 datasource를 연결하기 위해서는 application.yaml 파일에 환경설정을 해주어야 한다.
이번 포스팅에서는 application.yaml 파일에서 데이터베이스와 관련된 설정값에 대해 다루도록 한다.
Database 연결 설정
spring:
datasource:
url: jdbc:postgresql://localhost:5432/mydatabase
username: myuser
password: mypassword
driver-class-name: org.postgresql.Driver
먼저 DB source를 연결하는 설정은 위와 같다.
spring.datasource에 접속할 수 있는 datasource의 url과 계정정보, DB driver를 지정해주면 된다.
데이터베이스 접속 url 포맷은 jdbc:<database-type>://<host>:<port>/<database-name>와 같다.
spring.jpa 설정
Spring Boot에서 JPA와 Hibernate 관련 설정이다.
spring:
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
default_schema: steadybucks
format_sql: true
dialect: org.hibernate.dialect.PostgreSQLDialect
cache:
use_second_level_cache: true
use_query_cache: false
generate_statistics: true
여기서 각 속성값에 대한 설명은 다음과 같다.
- show-sql: 로깅으로 sql을 출력할지 선택한다.
- format_sql: show_sql이 true일 때 로그 출력을 sql에 맞게 formatting하여 보기 이쁘게 출력해준다.
- ddl-auto: 서버 실행 시 Entity 코드로 생성된 DDL 실행여부를 설정한다.
- none: DDL을 자동으로 실행하지 않음.
- validate: Entity와 데이터베이스 스키마를 비교하여 일치 여부 확인. (일치하지 않으면 에러가 발생하면서 spring이 실행되지 않음.)
- update: 코드로 작성한 Entity 스키마를 기존 DB 스키마 구조와 비교하여 변경사항을 적용한다.
- create: 기존 스키마를 삭제하고 Entity 스키마로 새로 생성
- create-drop: 스키마를 새로 생성하고 어플리케이션 종료 시 스키마 삭제
- default_schema: 타겟 스키마 이름 지정.
- dialect: DB마다 문법이나 데이터타입이 조금씩 달라지는데 이를 지정해주는 설정.
- cache: 캐싱에 대한 설정은 선택이다
- use_second_level_cache: 2차 캐시 활성화 여부
- use_query_cache: 쿼리 결과를 캐시에 저장할지 여부
- generate_statistics: Hibernate 통계 생성 여부
중요한것은 역시 ddl-auto이다. 개발할 때는 주로 create, update를 사용하지만, 운영서버에서는 절대절대 사용하면 안된다 자칫하면 데이터가 망가지기 때문. 운영서버에서는 none이나 validate를 사용하고 헷갈리는것을 방지하기 위해 보통 dev, prod profile을 각자 생성하여 설정값을 나눈다.
HikariCP 설정
Spring Boot는 기본적으로 HikariCP를 데이터소스 풀로 사용하며 주요 설정은 다음과 같다.
spring:
datasource:
hikari:
connection-timeout: 30000 # 연결 대기 시간(밀리초)
idle-timeout: 600000 # 유휴 상태 유지 시간(밀리초)
max-lifetime: 1800000 # 연결 최대 수명(밀리초)
minimum-idle: 10 # 최소 유휴 연결 수
maximum-pool-size: 30 # 최대 연결 수
728x90