본문 바로가기
YC TECH ACADEMY/projects

[Spring/Spring Boot] dev와 live을 분리하여 dev에는 H2, live에는 MySql 연동하기

by 주연이가 주연이다. 2023. 11. 28.

.java 파일들

DevDataSourceConfig.java

 

LiveDataSourceConfig.java

 


 

.yml 파일들

application.yml

active가 live면 live가, 

active가 dev면 dev가 사용된다.

application-dev.yaml
application-live.yaml

spring:  
    datasource:    
        driver-class-name: com.mysql.cj.jdbc.Driver    
        url: jdbc:mysql://localhost:(Port 번호)/(Schema 이름)?serverTimezone=Asia/Seoul    
        username: (user 이름)    
        password: (password)

 

 


 

 

ddl-auto 종류

  • create

애플리케이션 시작 시에 데이터베이스 테이블을 생성. 이미 테이블이 존재하는 경우에는 해당 테이블을 삭제하고 다시 생성. (drop + create)

  • create-drop

애플리케이션 시작 시에 데이터베이스 테이블을 생성하고, 애플리케이션이 종료될 때 해당 테이블을 삭제.

  • update

애플리케이션 시작 시에 데이터베이스 테이블을 업데이트. 새로운 엔티티가 추가되거나 기존 엔티티의 속성이 변경된 경우 해당 변경사항을 반영.

  • validate

애플리케이션 시작 시에 데이터베이스 스키마가 현재 엔티티와 일치하는지 확인. 엔티티와 스키마가 일치하지 않으면 예외가 발생.

  • none

자동으로 데이터베이스 스키마를 생성하지 않음. 개발자가 직접 DDL 스크립트를 작성해야함.

 

 

주의점

  • 개발 단계(Development)

create-drop 또는 update: 개발자들이 빠르게 개발을 진행하고 테스트할 수 있도록 도움을 줌. create-drop는 애플리케이션을 실행할 때마다 테이블을 생성하고 종료 시에 삭제하므로 초기 데이터를 로딩하는 등의 용도로 유용함. update는 변경된 엔티티만 업데이트하므로 테이블을 자주 수정하는 경우에 편리함.

  • 테스트 단계(Test)

create 또는 update: 테스트 환경에서는 테스트 케이스를 실행할 때마다 새로운 데이터베이스를 생성하거나 업데이트하는 것이 일반적임.

  • 스테이징(Staging) 단계

update 또는 validate: 스테이징 환경에서는 프로덕션과 유사한 환경이므로 update나 validate를 사용하여 스키마를 업데이트하거나 검증할 수 있음. 이 단계에서는 개발자가 변경한 내용을 스테이징 환경에서 확인할 수 있도록 해야 함.

  • 프로덕션(Production) 단계

validate 또는 none: 프로덕션 환경에서는 스키마 변경을 주의해서 관리해야함. 일반적으로는 마이그레이션 도구를 사용하거나, 변경된 내용을 수동으로 적용하는 것이 좋음.

 

 


[참고]

https://velog.io/@kkte01/java.sql.SQLSyntaxErrorException-Table-%ED%85%8C%EC%9D%B4%EB%B8%94%EB%AA%85-doesnt-exist

https://gocoder.tistory.com/2501

728x90
반응형