Develop/[JPA]
[JPA] 스프링 Timezone 설정 + Aws, Docker mariadb timezone설정
HiSmith
2023. 9. 30. 11:39
반응형
타임존이 이상하게 되어있어서, 실제 쿼리를 수행할 때 다르게 결과를 보여준다.
1. DB timezone 설정
2. JPA 내 타임존 설정
위의 두가지를 크게 변경해주어야 한다.
JPA 내 타임존 변경
jpa:
open-in-view: false
show-sql: true
hibernate:
ddl-auto: update
jdbc:
time_zone: Asia/Seoul
properties:
hibernate:
show_sql: true
format_sql: true
package com.boiler.core.backend;
import jakarta.annotation.PostConstruct;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import java.util.TimeZone;
@SpringBootApplication
@EnableJpaAuditing
public class BackendApplication {
public static void main(String[] args) {
SpringApplication.run(BackendApplication.class, args);
}
@PostConstruct
public void started() {
// timezone UTC 셋팅
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
}
}
추가로 디비 설정은 아래와 같다.
Docker 로 설정하면 아래와 같다.
version: "3.2"
services:
database:
container_name: database
image: mariadb
volumes:
- ./db/conf.d:/etc/mysql/conf.d
- ./db/data:/var/lib/mysql
environment:
- MYSQL_DATABASE=db1
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_ROOT_HOST=%
- TZ=Asia/Seoul
command: ['--character-set-server=utf8mb4','--innodb-read-only-compressed=OFF','--collation-server=utf8mb4_unicode_ci','--transaction-isolation=READ-COMMITTED']
ports:
- 3306:3306
환경쪽에 추가가되었고, 아래 커맨드로 확인이 가능하다.
SELECT NOW(), @@system_time_zone AS TimeZone;
aws의 경우 별도 파라미터 그룹을 생성해서 설정해줘야한다.
1.파라미터 그룹 기존 인스턴스 를 parent로 한 그룹 신규 생성
2.기존 인스턴스에 파라미터 그룹을 신규 생성한 파라미터 그룹으로 수정
반응형