[DB] Spring Boot 프로젝트에 MySQL 연결하는 방법과 각 DB들의 조합 추천

홍승민·2025년 4월 3일
post-thumbnail

Spring Boot 프로젝트와 잘 맞는 데이터베이스(DB) 및 MySQL 연동 방법

스프링부트(Spring Boot) 프로젝트에서 데이터베이스(DB)는 필수적인 요소입니다. 프로젝트의 성격에 따라 적절한 DB를 선택하는 것이 중요하며, 이번 글에서는 스프링부트와 잘 맞는 DB를 소개하고, Spring Boot와 MySQL을 연동하는 방법을 정리해보겠습니다.


Spring Boot와 잘 맞는 데이터베이스

1. 관계형 데이터베이스(RDBMS)

🔹 MySQL / MariaDB

  • 가장 널리 사용되는 오픈소스 RDBMS
  • Spring Boot와의 연동이 용이
  • 클라우드 환경에서도 잘 동작 (AWS RDS, GCP Cloud SQL 등)
  • MariaDB는 MySQL과 거의 동일하며, 라이선스 문제에서 자유로움

🔹 PostgreSQL

  • ACID(원자성, 일관성, 독립성, 지속성) 지원이 강력함
  • JSON, 배열 등의 데이터 타입 지원 → NoSQL 기능도 일부 활용 가능
  • Spring Data JPA와 잘 맞으며, 확장성이 뛰어남

🔹 Oracle DB

  • 기업용 프로젝트에서 많이 사용됨
  • 대규모 트랜잭션 처리 가능, 안정성이 높음
  • 스프링과 연동 시 JDBC나 MyBatis를 주로 사용

🔹 Microsoft SQL Server

  • Windows 환경에서 주로 사용되는 RDBMS
  • Spring Boot와 연동 가능하지만, 기업 시스템에서 주로 사용됨

2. NoSQL 데이터베이스

🔹 MongoDB

  • JSON 문서 기반의 NoSQL DB
  • Spring Data MongoDB 사용 가능
  • 스키마가 유연하여 빠른 개발에 유리함

🔹 Redis

  • 인메모리 데이터 저장소로, 캐싱 및 세션 관리에 유용
  • Spring Boot에서 쉽게 설정 가능

🔹 Elasticsearch

  • 검색 기능이 중요한 프로젝트에서 사용
  • 로그 데이터 분석, 검색 최적화 등에 적합

추천 조합

웹 서비스, API 서버 : MySQL / PostgreSQL + Redis (캐싱)

대규모 트래픽 처리 : PostgreSQL + MongoDB (혼합) + Redis

기업용 시스템 : Oracle DB / MS SQL Server

검색 기능 강화 : MySQL + Elasticsearch

실시간 데이터 처리 : MongoDB + Redis


Spring Boot와 MySQL 연동 방법

1️⃣ MySQL 설치 및 설정

MySQL이 설치되어 있지 않다면, (https://dev.mysql.com/downloads/windows/installer/8.0.html)에서 다운로드합니다.

설치 후에는 아래의 블로그에 들어가서 설치를 완료해 줍니다.
(https://velog.io/@bi-sz/MySQL-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0)

그 다음으로 DB를 생성합니다.

CREATE DATABASE spring_db;
USE spring_db;

2️⃣ Spring Boot 프로젝트 설정

1. build.gradle (또는 pom.xml) 수정

Spring Boot에서 MySQL을 사용하려면 spring-boot-starter-data-jpamysql-connector-java를 추가해야 합니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'mysql:mysql-connector-java'
}

Maven을 사용하는 경우:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

3️⃣ application.properties (또는 application.yml) 설정

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/spring_db?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update

application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/spring_db?serverTimezone=Asia/Seoul
    username: root
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect
    hibernate:
      ddl-auto: update

ddl-auto 옵션 설명

  • create : 애플리케이션 실행 시 기존 테이블 삭제 후 다시 생성
  • update : 변경된 부분만 반영 (권장)
  • validate : 테이블이 실제로 존재하는지 확인 (수정 없음)
  • none : Hibernate 자동 DDL 생성을 사용하지 않음

4️⃣ 엔티티(Entity) 및 레포지토리(Repository) 생성

1. 엔티티(Entity) 클래스 생성

import jakarta.persistence.*;
import lombok.*;

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false, length = 50)
    private String name;
}

2. 레포지토리(Repository) 생성

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

5️⃣ 데이터 저장 및 조회 테스트

서비스(Service) 및 컨트롤러(Controller) 추가

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
@RequiredArgsConstructor
public class UserController {
    private final UserRepository userRepository;

    @PostMapping
    public User saveUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    @GetMapping
    public List<User> getUsers() {
        return userRepository.findAll();
    }
}

이렇게 만들어두고 PostMan을 사용하면 Request를 쉽게 보내서 DB와 연결이 되었는지 확인 할 수 있을겁니다.


마무리

이렇게 각 프로젝트의 요구사항에 따라 적절한 DB를 선택하고 설정하여 효율적인 개발을 하고 Spring Boot와 MySQL을 연동하는 법을 알아보았습니다. 감사합니다!

profile
열심히 배워가는 중..

0개의 댓글