개요
스프링 부트(Spring Boot) 애플리케이션을 개발하다 보면 로컬 환경에 설치된 MySQL 데이터베이스와 연결해야 하는 경우가 많습니다. 스프링 부트는 별도의 복잡한 설정 없이 application.properties 파일만으로 손쉽게 MySQL에 접속할 수 있습니다. 이 글에서는 설정 방법부터 실제 동작 확인까지 단계별로 살펴보겠습니다.
1. application.properties 설정
먼저 프로젝트의 src/main/resources 경로에 있는 application.properties 파일에 아래와 같이 데이터베이스 접속 정보를 작성합니다.
spring.datasource.username=yourMySQLUserName spring.datasource.password=yourMySQLPassword spring.datasource.url=jdbc:mysql://localhost:3306/yoruDatabaseName spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
각 설정 항목의 의미는 다음과 같습니다.
- spring.datasource.username : MySQL 사용자 계정명 (기본값은 root)
- spring.datasource.password : 해당 계정의 비밀번호
- spring.datasource.url : JDBC 접속 URL로, 호스트(localhost), 포트(3306), 데이터베이스 이름을 지정합니다.
- spring.datasource.driver-class-name : MySQL 8.x부터 사용하는 JDBC 드라이버 클래스명입니다.
2. 테스트용 테이블 생성
설정이 정상적으로 동작하는지 확인하기 위해 MySQL에서 간단한 테이블을 만들어 보겠습니다.
mysql> create table demo71 -> ( -> id int, -> name varchar(20) -> ); Query OK, 0 rows affected (3.81 sec)
샘플 데이터 삽입
insert 명령어를 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into demo71 values(100,'John'); Query OK, 1 row affected (0.13 sec) mysql> insert into demo71 values(101,'David'); Query OK, 1 row affected (0.49 sec) mysql> insert into demo71 values(102,'Bob'); Query OK, 1 row affected (0.15 sec)
데이터 조회
select 문으로 저장된 데이터를 확인합니다.
mysql> select *from demo71;
실행 결과는 다음과 같습니다.
+------+-------+ | id | name | +------+-------+ | 100 | John | | 101 | David | | 102 | Bob | +------+-------+ 3 rows in set (0.00 sec)
3. 스프링 부트 컨트롤러 작성
application.properties 설정이 로컬 MySQL과 정상적으로 연동되는지 검증하려면 실제 스프링 부트 애플리케이션을 실행해 테스트해야 합니다.
컨트롤러 클래스
EntityManager를 활용해 네이티브 쿼리를 실행하고 결과를 문자열로 반환하는 컨트롤러입니다.
package com.demo.controller;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/table")
public class TableController {
@Autowired
EntityManager entityManager;
@ResponseBody
@GetMapping("/demo71")
public String getData() {
Query sqlQuery = entityManager.createNativeQuery("select name from demo71");
List<String> result = sqlQuery.getResultList();
StringBuilder sb = new StringBuilder();
Iterator itr = result.iterator();
while(itr.hasNext()) {
sb.append(itr.next()+" ");
}
return sb.toString();
}
}메인 클래스
스프링 부트 애플리케이션의 진입점 역할을 하는 메인 클래스 코드입니다.
package com.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JavaMysqlDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JavaMysqlDemoApplication.class, args);
}
}4. 애플리케이션 실행 및 결과 확인
메인 클래스에서 마우스 오른쪽 버튼을 클릭한 후 Run as Java Application을 선택하여 애플리케이션을 실행합니다. 정상적으로 기동되었다면 아래 URL로 접속해 결과를 확인할 수 있습니다.
https://localhost:8093/table/demo71
브라우저에 접속하면 demo71 테이블에 저장된 이름 데이터가 다음과 같이 출력됩니다.
John David Bob
마무리
이처럼 스프링 부트에서는 application.properties 파일에 접속 정보만 올바르게 입력하면 별도의 XML 설정 없이 로컬 MySQL과 자동으로 연결됩니다. JPA나 Spring Data JDBC 등을 함께 사용하면 더욱 생산적인 데이터베이스 개발이 가능하니, 이번 예제를 바탕으로 다양한 기능을 확장해 보시기 바랍니다.