Spring Boot 개발환경에서 기본적인 application.yml 설정
server: port: 8081 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/(Database이름)?serverTimezone=Asia/Seoul&characterEncoding=UTF-8 username: (사용자 계정 정보) password: (패스워드) thymeleaf: cache: false # spring data jpa 설정 jpa: database-platform: org.hibernate.dialect.MySQL5InnoDBDialect open-in-view: false show-sql: true hibernate: ddl-auto: update*thymeleaf
thymeleaf: cache: falsethymeleaf.cache: false는 템플릿 캐싱을 비활성화하여 매번 템플릿 파일을 읽어 들이게 하고, 이는 개발 중에 템플릿 파일을 수정할 때 즉시 반영되도록 하기 위한 설정이다.
운영 환경에서는 캐시를 활성화(true)하여 성능을 최적화하는 것이 좋다.*jpa
database-platform: org.hibernate.dialect.MySQL5InnoDBDialectHibernate가 MySQL 데이터베이스와 통신할 때 사용할 SQL 방언(dialect)을 지정한다.
*Hibernate는 데이터베이스에 따라 SQL 문법이 다를 수 있기 때문에, 방언을 설정하면 그에 맞는 SQL 문법을 사용한다.이 설정은 "Open Session in View" 패턴을 사용할지 여부를 결정한다.
기본적으로 Spring Boot는 이 패턴을 활성화하여, 뷰 렌더링 동안에도 Hibernate 세션이 열려 있는 상태로 유지되게 한다. 이를 통해 지연 로딩(Lazy Loading)을 사용할 수 있게 된다.
하지만 이 설정이 false로 되어 있으면, 뷰 렌더링 전에 데이터베이스 세션이 닫히므로 Lazy Loading을 사용하려면, 데이터 조회 시점에서 모든 데이터를 미리 로딩해야 한다.
장점: 퍼포먼스 개선이나, 데이터베이스 연결을 뷰 레이어까지 유지하지 않기 때문에 연결 자원을 더 효율적으로 사용할 수 있다.show-sql: true이 설정을 true로 하면, Hibernate가 실행하는 SQL 쿼리를 콘솔에 출력한다.
개발 중에 매우 유용한 설정으로, 실제로 어떤 SQL 쿼리가 실행되는지 확인하고 디버깅할 수 있다.
성능에 중요한 운영 환경에서는 보통 false로 설정해 로그를 최소화하는 것이 좋다.hibernate.ddl-auto: updateHibernate가 애플리케이션 실행 시 데이터베이스 스키마를 어떻게 관리할지를 결정하는 설정이다.
update로 설정하면, Hibernate는 데이터베이스 테이블이 애플리케이션 엔티티 클래스와 일치하는지 확인하고, 필요하면 자동으로 테이블을 업데이트한다.
예를 들어, 엔티티 클래스에 새로운 필드를 추가하면 해당 필드에 맞춰 데이터베이스 스키마도 자동으로 업데이트된다.*다른 옵션
none: 아무 작업도 하지 않음.
validate: 엔티티와 데이터베이스 테이블이 일치하는지 확인, 일치하지 않으면 오류 발생.
create: 애플리케이션 실행 시마다 데이터베이스 테이블을 새로 생성.
create-drop: 애플리케이션 종료 시점에 테이블을 삭제(drop)함.
update: 현재 데이터베이스 구조를 유지하면서, 엔티티 클래스에 맞게 필요한 부분만 업데이트.
주의: update는 개발 환경에서는 편리하지만, 운영 환경에서는 데이터 손실이나 의도치 않은 스키마 변경을 방지하기 위해 적절한 전략을 사용하는 것이 좋다.