본문 바로가기
스프링 부트3

스프링 부트 3에서 JPA 설정하기

by 굿센스굿 2024. 12. 5.
반응형

 

스프링 부트(Spring Boot)는 Java 애플리케이션 개발을 단순화하는 강력한 도구이며, JPA(Java Persistence API)는 객체 관계 매핑(ORM)을 제공하는 핵심 기술입니다. 스프링 부트 3에서 JPA 설정을 통해 데이터베이스와의 상호작용을 손쉽게 구성하고 효율적인 데이터 관리를 구현할 수 있습니다. 이번 글에서는 스프링 부트 3에서 JPA를 설정하는 방법을 단계별로 살펴보고, 실무에서 유용한 예제 3가지를 함께 알아보겠습니다.


1. JPA란 무엇인가?

JPA의 개념

JPA(Java Persistence API)는 자바 객체를 데이터베이스 테이블과 매핑하여 개발자가 데이터베이스와 상호작용할 때 SQL 대신 객체 지향 프로그래밍(OOP) 방식으로 작업할 수 있게 해줍니다. JPA는 Hibernate, EclipseLink와 같은 구현체를 통해 사용됩니다.

JPA의 장점

  • 객체-관계 불일치 해결: 엔티티 객체와 데이터베이스 테이블 간의 매핑을 간편하게 처리합니다.
  • 생산성 향상: SQL 작성과 반복적인 데이터 매핑 코드를 줄여줍니다.
  • 유지보수성: 데이터베이스 변경에 따른 영향을 최소화합니다.

2. 스프링 부트 3에서 JPA 설정 단계

2.1 프로젝트 생성 및 의존성 추가

Spring Initializr를 통해 스프링 부트 프로젝트를 생성합니다. 아래는 필요한 의존성 목록입니다.

  • Spring Web: RESTful API 구현을 위해 필요합니다.
  • Spring Data JPA: JPA를 쉽게 사용할 수 있도록 도와줍니다.
  • H2 Database (또는 원하는 데이터베이스 드라이버): 테스트 및 데이터베이스 통합을 위해 필요합니다.

build.gradle에 추가할 의존성

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'com.h2database:h2' // 다른 데이터베이스 사용 시 드라이버 변경
}

2.2 데이터베이스 설정

application.yml 또는 application.properties 파일에서 데이터베이스 정보를 설정합니다.

application.yml 예제

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    username: sa
    password:
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate.format_sql: true
  • ddl-auto: 엔티티 매핑에 따라 테이블 생성 및 변경을 관리합니다. (create, update, validate, none 중 선택)
  • show-sql: 실행되는 SQL 쿼리를 콘솔에 출력합니다.

2.3 엔티티(Entity) 클래스 생성

데이터베이스 테이블과 매핑될 엔티티 클래스를 생성합니다.

예제: User 엔티티

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

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

    // Getters and Setters
}

2.4 리포지토리(Repository) 생성

JPA 리포지토리를 사용해 데이터를 쉽게 CRUD(생성, 읽기, 업데이트, 삭제)할 수 있습니다.

예제: UserRepository

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

public interface UserRepository extends JpaRepository<User, Long> {
    // 추가 쿼리 메서드를 정의할 수 있습니다.
}

3. JPA 설정 관련 주요 예제

예제 1: 사용자 등록 및 조회 REST API

아래는 간단한 사용자 등록 및 조회 API를 구현하는 코드입니다.

UserController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserRepository userRepository;

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

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

예제 2: 사용자 데이터 필터링

findByName과 같은 메서드를 추가해 사용자 데이터를 필터링합니다.

UserRepository

List<User> findByName(String name);

호출 예제

GET /users?name=John

예제 3: H2 데이터베이스 콘솔 사용

스프링 부트에서 제공하는 H2 콘솔을 활성화하여 데이터베이스를 직접 확인합니다.

설정

spring:
  h2:
    console:
      enabled: true

콘솔 접속

http://localhost:8080/h2-console에서 접속 가능.


4. 마무리

스프링 부트 3에서 JPA 설정은 간단하지만 매우 강력한 기능을 제공합니다. 위의 단계를 따라가면 프로젝트 초기 설정부터 실질적인 API 구현까지 수월하게 진행할 수 있습니다. 특히, 예제를 기반으로 확장해 나가면서 실제 애플리케이션에서도 효과적으로 활용할 수 있습니다.

이 글이 JPA 설정 과정에 도움이 되었기를 바라며, 추가 질문이나 확장 주제가 있다면 댓글로 남겨주세요! 😊

반응형