[JAVA] Spring Boot와 MySQL 연동하기 - 입문 가이드

Spring Boot를 사용한 웹 애플리케이션 개발에서 MySQL과의 연동은 가장 기본이면서도 중요한 과정입니다.
초보 개발자도 쉽게 따라할 수 있도록, MySQL 연결 설정부터 테스트까지 단계별로 설명해드리겠습니다.

 


1. MySQL 설치 및 접속 확인

먼저 MySQL이 설치되어 있어야 합니다. 로컬 또는 Docker를 사용하셔도 괜찮습니다.

# macOS Homebrew 예시
brew install mysql
brew services start mysql
mysql -u root -p

TIP: docker로 실행할 경우 아래 명령어를 사용할 수 있습니다.

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -d mysql:8

 

2. MySQL에 데이터베이스 생성

Spring Boot에서 사용할 DB를 미리 만들어 두세요. 예: springboot_db

CREATE DATABASE springboot_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

3. 의존성 추가 (Maven 기준)

Spring Boot 프로젝트의 pom.xml에 MySQL 관련 의존성을 추가합니다.


<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

 

4. application.yml 또는 application.properties 설정

다음과 같이 DB 연결 정보를 등록합니다.

# src/main/resources/application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot_db?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: root
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        format_sql: true

Tip: 환경별 설정을 분리하고 싶다면 application-dev.yml 같은 Spring Profile 기능을 함께 사용해보세요.

 

5. 간단한 Entity와 Repository 테스트

연동 테스트를 위해 간단한 사용자 엔티티와 Repository를 만들어봅시다.

@Entity
public class User {
    @Id @GeneratedValue
    private Long id;

    private String name;
    private String email;
}
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email);
}

 

6. 실행 및 결과 확인

프로젝트를 실행하면 Spring Boot가 자동으로 MySQL에 연결하고, Entity 기준으로 테이블을 생성합니다.
application.yml에서 spring.jpa.show-sql=true 설정을 했다면 콘솔에서 SQL도 확인할 수 있습니다.

 

7. 자주 하는 실수와 해결법

  • Timezone 오류: JDBC URL에 serverTimezone=Asia/Seoul을 명시하세요
  • Unicode 문제: characterEncoding=UTF-8 옵션 추가
  • 엔티티 테이블이 생성되지 않음: @Entity 누락 여부 확인
  • 포트 충돌: Docker 실행 시 3306 포트 중복 주의

 

마무리

지금까지 Spring Boot와 MySQL을 연동하는 기본적인 방법을 소개해드렸습니다.
이제 JPA, QueryDSL, 복잡한 트랜잭션 처리까지 확장해볼 수 있겠죠? 
기초가 튼튼해야 개발이 편해집니다.