build.gradle
// mysql
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'
org.springframework.boot:spring-boot-starter-data-jpa
: SpringBoot에서 JPA를 사용하려는 경우 필요한 의존성이다. 이 패키지에는 Spring Data JPA와 Hibernate를 포함하며 데이터베이스와의 상호작용을 지원한다.com.mysql:mysql-connector-j
: : MySQL 데이터베이스와의 연결을 위해 필요한 MySQL JDBC 드라이버를 추가한다. MySQL 데이터베이스와 상호작용하기 위해서 해당 데이터베이스에 연결할 때 사용되는 드라이버가 필요하며, JDBC 연결을 지원한다.# JPA MySQL
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ${SPRING_DATASOURCE_URL}
username: root
password: ${SPRING_DATASOURCE_PASSWORD}
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL8Dialect
show-sql: true
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
url, password는 공개되어서는 안되는 데이터이다.
따라서, yml 파일에는 MySQL 사용을 위한 JPA 설정만 해두었고
application.properties 파일에는 url, password 정보를 따로 작성해주었다.
현재 진행하고 있는 피노키오 프로젝트에서는 yml 없이 properties 파일만을 사용하고 있었는데,이번 기회에 yml 파일을 추가로 생성하였다.
yml 파일은 설정을 위한 용도, properties 파일은 민감한 정보를 저장하는 용도로 분리하여 사용 중이다.
properties 파일은 .gitignore에 추가하여 github 저장소에 노출되지 않도록 관리한다.
SPRING_DATASOURCE_URL = URL_주소
SPRING_DATASOURCE_PASSWORD = DB_비번
jpa:
# mysql 사용하겠다.
database: mysql
# MySQL 8 dialect를 사용하도록 지정
database-platform: org.hibernate.dialect.MySQL8Dialect
# SQL 쿼리를 콘솔에 출력
show-sql: true
# 서버를 실행할 때마다 DB 초기화
# none : DB구조는 변경되지 않음
# update : 변경된 스키마만 적용
# create : 시작될 때만 drop하고 다시 생성
# create-drop : 시작과 종료에서 모두 drop
hibernate:
ddl-auto: update
# SQL 쿼리를 읽기 쉽게 포맷
properties:
hibernate:
format_sql: true
참고
https://www.baeldung.com/hibernate-lazy-loading-workaround