사용 데이터베이스별 세팅법
방법 1 : application.properties
# 공통
spring.jpa.hibernate.ddl-auto=create # (1)create (2)create-drop (3)update (4)validate
spring.jpa.open-in-view=true # 성능을 고려한다면 false
# ========================================================================
# MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/본인이 사용중인 스키마 이름
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.datasource.username=root
spring.datasource.password=1234
# Oralce
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl # 혹은, 교육용을 사용중일경우 -> spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver # 버전에 따라 안될 수도 있다, 안될경우 -> oracle.jdbc.driver.OracleDriver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect # 오라클 버전이 10g 가 아닌 경우, 해당 버전으로 수정필요 (ex: Oracle9iDialect , Oracle12cDialect)
spring.datasource.username=root
spring.datasource.password=1234
# PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres # jdbc:postgresql:[HOST][:PORT]/[DATABASE]
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.username=root
spring.datasource.password=1234
# H2
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb # 인 메모리가 아닌, 파일로 저장/관리하고싶은경우 -> spring.datasource.url=jdbc:h2:file:./database;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.username=sa
spring.datasource.password=
# ========================================================================
# 옵션
spring.jpa.properties.hibernate.default_schema=기본스키마
spring.jpa.properties.hibernate.jdbc.time_zone=Asia/Seoul
방법 2 : application.yml
# 공통
spring:
jpa:
hibernate:
ddl-auto: create # (1)create (2)create-drop (3)update (4)validate
open-in-view: true # 성능을 고려한다면 false
# ========================================================================
# MySQL
datasource:
url: jdbc:mysql://localhost:3306/본인이 사용중인 스키마 이름
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
datasource:
username: root
password: 1234
# Oracle
datasource:
url: jdbc:oracle:thin:@localhost:1521:orcl # 혹은, 교육용을 사용중일경우 -> jdbc:oracle:thin:@localhost:1521:xe
driver-class-name: oracle.jdbc.OracleDriver # 버전에 따라 안될 수도 있다, 안될경우 -> oracle.jdbc.driver.OracleDriver
jpa:
properties:
hibernate.dialect: org.hibernate.dialect.Oracle10gDialect # 오라클 버전이 10g 가 아닌 경우, 해당 버전으로 수정필요 (ex: Oracle9iDialect , Oracle12cDialect)
datasource:
username: root
password: 1234
# PostgreSQL
datasource:
url: jdbc:postgresql://localhost:5432/postgres # jdbc:postgresql:[IP or Domain][:PORT]/[DATABASE]
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
datasource:
username: root
password: 1234
# H2
h2:
console:
enabled: true
datasource:
url: jdbc:h2:mem:testdb # 인 메모리가 아닌, 파일로 저장/관리하고싶은경우 -> jdbc:h2:file:./database;DB_CLOSE_ON_EXIT=FALSE
driver-class-name: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.H2Dialect
datasource:
username: sa
password:
# ========================================================================
# 옵션
jpa:
properties:
hibernate.default_schema: 기본스키마
hibernate.jdbc.time_zone: Asia/Seoul
방법 3 : application-{파일명}.확장자
위 방법 1, 2는 하나의 설정 파일에 모든 내용을 저장하고 있다.
하지만 실무에서 개발할땐 상황에 따라 다른 DB 연결 정보가 필요한 경우가 발생한다.
* ex) 개발할때(로컬), 개발한걸 실제 서버에 올리기 전(테스트 서버), 실제 서버에 올릴때(실제 배포 서버)
해당 " 방법 3 "은 위와 같을때 유용하게 사용할 수 있다
예시로 application-local.yml 파일을 만들 수 있는데
다음과 같은 형식만 지키면 얼마든지 만들어도 상관없다
application-이름.확장자
이름은 아무거나 입력해도 상관없지만, 확장자는 다음 2개중 하나만 가능하다. : .properties 혹은 .yml
예시 1
application.yml
공통되는 설정을 작성하는 파일
# application.yml 혹은 .properties 파일은 공통으로 사용될 설정을 적어주고
# 각 개발 환경별 필요한 정보는 application-파일명.yml 혹은 .properties 파일로 만들고, 만들어진 파일에 적어주는 방식
spring:
profiles:
active: local
# 만약 application-local.yml 파일이 아닌, 다른 설정 파일을 적용하고싶은경우.
# ex) application-docker.yml 혹은 .propertis 파일이 있다고 가정했을땐, 다음과 같이 사용한다
# active: docker
# 새로 만든 파일의 application- 이후, .확장자 사이에 있는 이름을 입력
# ex: application-local.yml)의 경우 하이픈 뒤, 그리고 .yml 사이에 있는 local을 입력
# ...
# ...
# 이외에도 파일 크기, 로깅 .. 등이 들어간다
# ...
# ...
application-local.yml
로컬환경에서 사용할 데이터베이스 관련 정보를 입력
# DB에 대한 정보만 입력
# class-name ..
# url ...
# username ...
# password .. 등등
예시 2
application.yml
공통되는 설정을 작성하는 파일
spring:
profiles:
active: local
servlet:
multipart:
max-file-size: 1024MB
max-request-size: 5120MB
application-local.yml
로컬환경에서 사용할 데이터베이스 관련 정보를 입력
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: create # (1)create (2)create-drop (3)update (4)validate
properties:
hibernate:
format_sql: true
h2:
console:
enabled: true
ddl-auto 속성
위 내용에서 sprig.jpa.hibernate.ddl-auto 속성 값을 create 로 사용했다.
하지만, create 외에도 상황에 따라 다음과 같이 사용할 수 있다.
보통, 처음에만 create를 사용하고, 이후부터는 update를 사용한다. 그리고 안정화가되면 validate로 넘어가게된다.
속성값 | 설명 |
create | 실행시 모든 데이터를 삭제 + 새로운 테이블 생성 * 종료후 재실행전까지 테이블 및 데이터 존재 |
create-drop | 실행시 모든 데이터를 삭제 + 새로운 테이블 생성 * 종료시, 모든 테이블 및 데이터 삭제 |
update | 이미 존재하는 테이블내 변경된 사항만 반영 (ex: 컬럼명, 컬럼타입 .. 등) |
validate | 엔티티 어노테이션이 있는 파일내 필드와 테이블 필드를 비교하며 서로 다를경우 실행 종료 |
create 혹은 create-drop을 사용하면 모든 테이블이 다 삭제되는 대참사가 발생한다.
따라서, 처음 테이블만들때만 사용하고, 이후 절대 사용하면 안된다
'💻 FullStack > SpringBoot' 카테고리의 다른 글
스케줄러를 이용한 반복 작업 처리하기 (0) | 2024.03.17 |
---|---|
JPA Auditing 등록 및 수정 일시, 그리고 사용자 명 자동화 (0) | 2024.03.10 |
Spring Data JPA 네이티브 쿼리 (0) | 2023.08.19 |
Spring Data JPA 쿼리 메소드 (0) | 2023.08.15 |
Spring Data JPA 로그 설정들 (0) | 2023.08.13 |