Springboot & MySQL 연동

송현진·2023년 5월 8일

h2데이터베이스는 서버를 실행시킬 때마다 drop시켰다 create를 시켜서 데이터베이스를 MySQL로 변경해주기로 했다. 그래서 build.gradleapplicaiton.yml에서 MySQL을 연동시켜줬다.

dependencies {
    ....
    runtimeOnly 'mysql:mysql-connector-java'

build.gradle에 의존성을 추가해주었다.

application.yml에 DB 정보를 추가해주었다.

실행을 하니 에러가 다다다닥 나왔다;;

잘 찾아보니 driver 연결이 제대로 되지 않은 거 같았다.

Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

구글링을 해보니 다 이런식으로 application.yml에 DB 정보를 추가해주어서 이렇게 넣을 수 있도록 build.gradle을 바꿔주었다.

dependencies {
    ....
    runtimeOnly 'com.mysql:mysql-connector-j'

이렇게 직접적으로 넣어주니 잘 동작되는 모습이다.

난 DB가 서버를 실행시킬 때 마다 drop되었다 create 되지 않고 처음 실행시킬 때 create한 뒤 정보를 추가할 때마다 update 되는 방식을 사용하고 싶었다. 그래서 난 ddl-auto를 사용해 update를 넣어주었다.

spring.jpa.hibernate.ddl-auto=[ ]

create : 기존 테이블을 삭제하고 새로 생성 [ DROP + CREATE ]
create-drop : CREATE 속성에 추가로 어플리케이션을 종료할 때 생성한 DDL을 제거 [ DROP + CREATE + DROP ]
update : DB 테이블과 엔티티 매핑 정보를 비교해서 변경 사항만 수정 [ 테이블이 없을 경우 CREATE ]
validate : DB 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 어플리케이션을 실행하지 않음
none : 자동 생성 기능을 사용하지 않음

그랬더니 처음 create 된 후 서버를 재실행 해도 drop되지 않고 잘 유지되었다.

profile
개발자가 되고 싶은 취준생

0개의 댓글