[Spring] Spring boot와 Mysql 연동 (Gradle)

2022. 6. 13. 00:28Web/Spring

스프링을 이용해 공부를 하면서 기존에는 H2 데이터베이스를 사용하다가 Mysql을 사용해서 연결을 해보려고 한다.

application.properties과 build.gradle의 파일을 비교 변경하면서 진행하려고 한다.

 

build.gradle의 dependencies 부분

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	runtimeOnly 'com.h2database:h2'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}

우리가 build.gradle에서 주의 깊게 볼 부분은 runtimeOnly 부분이다.

runtimeOnly는 컴파일 시점에는 사용되지 않고, 실행 시점에 사용되게 하며, 이 부분을 바꿔서  Mysql로 변경하려고 한다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'mysql:mysql-connector-java'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

바꾸는 코드만 봐보자.

runtimeOnly 'com.h2database:h2'

runtimeOnly 'mysql:mysql-connector-java'

build.gradle의 파일 설정은 마무리되었다.  

 

이번에는 applicaiton.properties의 항목을 보려고 한다.

기존의 h2 데이터베이스 학습 당시 사용했던 설정이다.

# H2데이터베이스 설정
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver

# 콘솔에 Sql출력 여부
spring.jpa.show-sql=true

# 데이터베이스에 접속을 하기위한 정보
spring.datasource.username=sa
spring.datasource.password = "1234"

# hibernate 설정
spring.jpa.hibernate.ddl-auto=none # 자동으로 테이블 생상

 이 기존의 설정을 Mysql로 바꿔보겠다.

# mysql 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/jpa?serverTimezone=UTC&characterEncoding=UTF-8

# 로그인
spring.datasource.username=root
spring.datasource.password=1234

# hibernate 설정 
spring.jpa.hibernate.ddl-auto=create

 

 

  • spring.datasource.url=jdbc:mysql://localhost:3306/jpa? serverTimezone=UTC&characterEncoding=UTF-8
  • spring.datasource.url=jdbc:mysql://서버 IP:포트번호/DB명

위의 사진을 보면 나의 경우 서버가 학습과정이어서 localhost였으며, 포트번호는 기존에 3306으로 지정을 한 상태였다. 또한 DB명인 schema의 경우 JPA를 학습하면서 jpa로 생성을 하였기에 DB명은 jpa로 지정 후에 각 데이터베이스 및 테이블에서 지정되어야 할 속성을 정리하였다.

 

이러한 과정을 통해 h2 데이터베이스에서 mysql로 관리하는 데이터베이스를 바꿀 수 있었다. 

 


2022.12.19 추가

 

시간이 지나면서 스프링의 버전이 업데이트되고, mysql을 연동하는 gradle입력 코드도 달라졌다.

Spring | Home 

 

Spring makes Java simple.

Level up your Java code and explore what Spring can do for you.

spring.io

spring.io - projects - spring initaillizr

해당 페이지에서 프로젝트를 생성하기를 들어가 보자.

Add dependency

해당 항목의 dependency 항목을 누르게 되면 본인이 원하는 항목을 가져오려면 build.gradle항목에 무엇을 넣어야 하는지 알 수 있다. mysql의 연동을 위해 해당 키워드를 입력하면 아래의 창이 뜨면서 dependency항목에 추가가 된다.

해당 항목을 추가 후에 화면이다.

이제 explore버튼을 누르면 해당 gradle 코드 파일에 들어있는 항목이 보인다.

 

해당 dependencies의 부분을 살펴보자. 우리가 기존에 프로젝트에서 mysql을 사용했던 코드는 아래와 같다.

runtimeOnly 'mysql:mysql-connector-java'

다만 이번에 변경이 된 코드는  아래와 같다.

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

조금의 차이가 존재하여도 작업 환경에 큰 영향을 가져올 수 있다. 그러니 이와 같이 외부 라이브러리를 가져오는 작업을 할 때는 될 수 있으면 spring.io에서 해당 dependency를 찾아서 가져오는 것이 좋다고 생각한다.