스프링부트(Spring Boot) 프로젝트에서 데이터베이스(DB)는 필수적인 요소입니다. 프로젝트의 성격에 따라 적절한 DB를 선택하는 것이 중요하며, 이번 글에서는 스프링부트와 잘 맞는 DB를 소개하고, Spring Boot와 MySQL을 연동하는 방법을 정리해보겠습니다.
웹 서비스, API 서버 : MySQL / PostgreSQL + Redis (캐싱)
대규모 트래픽 처리 : PostgreSQL + MongoDB (혼합) + Redis
기업용 시스템 : Oracle DB / MS SQL Server
검색 기능 강화 : MySQL + Elasticsearch
실시간 데이터 처리 : MongoDB + Redis
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;
Spring Boot에서 MySQL을 사용하려면 spring-boot-starter-data-jpa와 mysql-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>
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
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 생성을 사용하지 않음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;
}
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
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을 연동하는 법을 알아보았습니다. 감사합니다!