코드스테이츠_국비교육/[Section3]

59.04_[Spring MVC] Spring 애플리케이션_실습_22.11.15

생각없이 해도 생각보다 좋다. 2022. 11. 16. 00:18

>실습 내용

Spring Boot Application(JPA)와 MySQL 을 연동하여 사용하기.

 

>구현 내용

1. build.gradle 에 MySQL Connector Java 의존성 라이브러리 추가.

2. -server.yml 파일 설정

- spring:datasource:driver-class-name/url/username/password

- ddl-auto: create-drop

등등

//MySQL 의 user 는 root 로 사용함.

 

>문제 상황

ddl-auto: create-drop 옵션이 적용이 안된다고 파악됨.

 

>문제 구체 상황

1. create 옵션은 기존 database(schema)에 존재하는 테이블을 drop하고 새로 create하는 옵션이다.

2. create-drop 옵션은 create 옵션에 추가적으로 애플리케이션을 종료할 때 모든 테이블을 drop하는 옵션이다.

3. 애플리케이션 실행 시, MySQL에서 database(schema)에 테이블이 생성된 것을 확인.
4. 애플리케이션 종료 시, database(schema)에 테이블이 그대로 유지되는 것을 확인.
5. 새로 애플리케이션 실행 시, 새로운 테이블이 생기는 것을 확인.

 

>문제 원인 확인

IDE 에서 애플리케이션을 실행하는 것은 상관없지만, 종료할 때 `gracefully shut down`이 되지 않는다고 한다.

때문에 ddl-auto: create-drop 옵션이 적용이 안되는 것이었다.

 

>해결1

Executable Jar 파일을 터미널 혹은 git bash 로 실행시키고 종료(ctrl + c)하면 문제없이 테이블이 초기화된다.

 

>해결2

application.yml 파일 설정에 graceful shutdown 옵션을 적용하면 된다고 한다.
이는 조금 더 공부가 필요하다.

server:
  shutdown: graceful
spring:
  lifecycle:
    timeout-per-shutdown-phase: 20s

 

 

>참고 파일(추가적인 에러 포함)

jpa-mysql 연동 에러.docx
0.68MB