연결 작업 한지는 꽤 됐지만 바빠서 이제 작성한다.

db와 연결하기 위해서는 application파일에 수정이 필요한데

두가지 형식이 있다.

  1. properties
  2. yml

1.properties

나는 이 방법은 사용하지 않았지만 이런 방법도 있다는 걸 알아두면 좋을 거 같아 정리해 본다.

 

# Spring DataSource (MySQL)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스명?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=아이디
spring.datasource.password=비밀번호

# Spring JPA
spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=none
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

spring.datasource.driver-class-name : 스프링 데이터소스 드라이버 클래스 이름을 입력한다.

- MySQL : com.mysql.cj.jdbc.Driver

 

spring.datasource.url : JDBC MySQL 접속 URL 입력한다.

spring.datasource.username : MYSQL 데이터베이스 유저 아이디를 입력한다.

spring.datasource.password : MySQL 데이터베이스 유저 비밀번호를 입력한다.

 

Spring JPA

spring.jpa.database: 사용하는 데이터베이스 종류를 입력합니다.

 

spring.jpa.hibernate.ddl-auto:

- none: 기본값, 데이터베이스 구조는 변경되지 않습니다.

- update: Hibernate 주어진 엔터티 구조에 따라 데이터베이스를 변경합니다.

- create: 매번 데이터베이스를 생성하지만 닫을 때 삭제하지 않습니다.

- create-drop: 데이터베이스를 생성하고 SessionFactory가 닫힐 때 삭제합니다.

 

spring.jpa.generate-ddl: 시작시 스키마 초기화할 지 여부입니다.

 

spring.jpa.show-sql: SQL문 로깅 활성화 여부입니다.

 

spring.jpa.database-platform

- MySQL: org.hibernate.dialect.MySQL8Dialect

- PostgreSQL: org.hibernate.dialect.PostgreSQLDialect 

 

spring.jpa.properties.hibernate.format_sql: log, console에 SQL문을 보기좋게 출력합니다.

 

spring.jpa.hibernate.jdbc.time_zone: @createdAt, @updatedAt 타임스탬프 시간 설정

- Asia/Seoul

* MySQL에 경우 serverTimezone=Asia/Seoul로 직접 설정 해도 된다.

 


2.yml

나는 yml방식을 사용 하였다.

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    # url: jdbc:mysql://localhost:3306/root
    url: jdbc:mysql://localhost:3306/community?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: community
    password: 1234
jpa :
  database: mysql
  database-platform: org.hibernate.dialect.MySQL8Dialect
  show-sql : true
  hibernate.ddl-auto : update
sql :
  init :
    mode : always

나머지 부분들은 properties와 비슷하니 ddl-auto에서 더 알아보도록 하자

 

ddl-auto : update > update는 엔티티로 등록된 클래스와 매핑되는 테이블이 없으면 새로 생성하는 것은 create와 동일하지만 기존 테이블이 존재한다면 테이블의 컬럼을 변경하게 된다.

 

하지만,일반적으로 생각하는 update와는 달리 모든 변경사항을 반영하는 것은 아니다. 기존에 존재하는 컬럼의 속성(nullalbe,크기,데이터 타입등)은 건드리지 않고, 새로운 컬럼이 추가되는 변경사항만 반영된다.

 

++ 나는 여기서 datebase-platfrom에서 버전이 달라 찾는데 시간이 꽤 걸렸다. 이부분을 주의 하면 될 것 같다

+ Recent posts