본문 바로가기
카테고리 없음

Spring Boot와 MySQL 연동 – 실전 가이드

by blogger6915 2025. 3. 4.
반응형

Spring BootMySQL을 연동하여 데이터베이스를 다루는 방법을 소개합니다. JPA(Hibernate)를 활용하면 객체 중심의 데이터 관리를 쉽게 구현할 수 있습니다.

Spring Boot와 MySQL 연동의 장점

  • 자동 설정 지원 - application.properties 설정만으로 MySQL 연동 가능
  • JPA와 Hibernate 지원 - 객체 지향적 데이터베이스 접근 가능
  • 손쉬운 데이터 관리 - CRUD(Create, Read, Update, Delete) 기능 제공

MySQL 설정 및 연동

먼저, MySQL을 설치하고 데이터베이스를 생성합니다.


CREATE DATABASE springboot_db;
CREATE USER 'springuser'@'localhost' IDENTIFIED BY 'springpassword';
GRANT ALL PRIVILEGES ON springboot_db.* TO 'springuser'@'localhost';
FLUSH PRIVILEGES;

Spring Boot 프로젝트 설정

Spring Boot 프로젝트에서 MySQL을 사용하기 위해 application.properties 또는 application.yml을 설정합니다.


spring.datasource.url=jdbc:mysql://localhost:3306/springboot_db?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=springuser
spring.datasource.password=springpassword
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.jpa.show-sql=true

엔터티(Entity) 및 JPA Repository 생성

아래는 간단한 `User` 엔터티와 JPA Repository 구현 코드입니다.


import jakarta.persistence.*;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // 기본 생성자 및 getter, setter 추가
}

Spring Data JPA Repository


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

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

REST API 컨트롤러 구현

간단한 CRUD API를 만들기 위한 `UserController`를 생성합니다.


import org.springframework.web.bind.annotation.*;
import java.util.List;

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

    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

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

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

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User updatedUser) {
        return userRepository.findById(id).map(user -> {
            user.setName(updatedUser.getName());
            user.setEmail(updatedUser.getEmail());
            return userRepository.save(user);
        }).orElseThrow(() -> new RuntimeException("User not found"));
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        userRepository.deleteById(id);
        return "삭제 완료!";
    }
}

Postman을 활용한 API 테스트

Spring Boot 애플리케이션을 실행한 후, Postman을 사용하여 API 요청을 테스트할 수 있습니다.

  • GET 요청: http://localhost:8080/api/users
  • POST 요청: http://localhost:8080/api/users (Body에 JSON 데이터 추가)
  • PUT 요청: http://localhost:8080/api/users/{id} (업데이트할 데이터 전송)
  • DELETE 요청: http://localhost:8080/api/users/{id}

Spring Boot와 MySQL 학습 추천 자료

  • 📌 MySQL 공식 튜토리얼
  • 📌 Postman을 활용한 API 테스트
  • 📌 GitHub 오픈소스 프로젝트 참여

마무리

Spring Boot와 MySQL을 연동하면 데이터베이스 기반 웹 애플리케이션을 쉽게 개발할 수 있습니다. JPA를 활용하면 객체 중심으로 데이터를 관리할 수 있으며, REST API와 결합하면 강력한 백엔드를 구축할 수 있습니다.

반응형