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

스프링 부트 3와 Hibernate 기초

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

 

스프링 부트 3(Spring Boot 3)와 Hibernate는 현대 자바 개발 환경에서 필수적으로 사용되는 기술입니다. 이 글에서는 스프링 부트 3와 Hibernate의 기본 개념을 이해하고, 이를 활용하여 효율적으로 데이터를 관리하는 방법을 알아보겠습니다. 또한, 이를 실제로 적용하기 위한 예제도 함께 제공하여 실습할 수 있도록 돕겠습니다.


1. 스프링 부트 3와 Hibernate란 무엇인가?

1.1 스프링 부트 3

스프링 부트는 자바 기반의 프레임워크로, 복잡한 설정 없이 애플리케이션 개발을 간소화합니다. 특히 3.x 버전은 성능 향상, 새로운 기능, 최신 Java 표준 지원(Jakarta EE) 등의 개선이 포함되어 현대 개발 환경에 적합합니다. 주요 특징은 다음과 같습니다:

  • 간단한 설정: 다양한 스타터 의존성을 제공해 필요한 기능을 쉽게 추가 가능.
  • 마이크로서비스 지원: 경량화된 구조로 마이크로서비스 설계에 적합.
  • AOT(Ahead of Time) 컴파일링: 성능 최적화를 위해 실행 전에 코드를 컴파일.

1.2 Hibernate

Hibernate는 객체-관계 매핑(ORM)을 제공하는 프레임워크로, 객체 지향 프로그래밍 환경에서 관계형 데이터베이스를 쉽게 관리할 수 있도록 돕습니다. 주요 기능은 다음과 같습니다:

  • ORM 매핑: 자바 객체와 데이터베이스 테이블 간 매핑.
  • HQL(Hibernate Query Language): SQL과 유사한 쿼리 언어를 지원.
  • 캐싱: 성능 향상을 위한 1차 및 2차 캐싱 제공.

2. 스프링 부트와 Hibernate의 통합

스프링 부트와 Hibernate는 긴밀하게 통합되어 있어 데이터베이스 작업을 단순화합니다. 이 통합은 Spring Data JPA를 통해 이루어지며, 애플리케이션 개발자가 복잡한 SQL 쿼리를 작성하지 않고도 데이터베이스 작업을 처리할 수 있도록 돕습니다.

2.1 의존성 설정

스프링 부트와 Hibernate를 사용하려면 pom.xml 파일에 아래와 같은 의존성을 추가해야 합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
  • spring-boot-starter-data-jpa: Spring Data JPA와 Hibernate를 포함한 의존성.
  • h2: 간단한 테스트를 위한 인메모리 데이터베이스.

3. 기본 구성과 설정

3.1 애플리케이션 설정

application.properties 또는 application.yml 파일에서 데이터베이스 연결 및 Hibernate 설정을 정의합니다. 예를 들어, H2 데이터베이스를 사용할 경우 다음과 같이 설정할 수 있습니다:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update

3.2 엔티티 클래스 작성

엔티티는 데이터베이스 테이블과 매핑되는 클래스입니다. 다음은 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
}

4. 실습 예제

4.1 Repository 작성

Hibernate를 통해 데이터베이스와 상호작용하려면 JPA 리포지토리를 사용합니다.

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

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

4.2 서비스 클래스 작성

서비스 계층은 비즈니스 로직을 처리하는 역할을 합니다.

import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    private final UserRepository userRepository;

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

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

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

4.3 REST 컨트롤러 작성

RESTful API를 통해 데이터를 관리하는 컨트롤러를 작성합니다.

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

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

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

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }
}

5. 실행 및 테스트

스프링 부트 애플리케이션을 실행한 후, API 테스트 도구(Postman 또는 cURL)를 사용하여 GET /users와 POST /users를 호출하여 데이터를 관리할 수 있습니다.

  • GET 요청: http://localhost:8080/users
  • POST 요청: http://localhost:8080/users
    {
      "name": "John Doe",
      "email": "john.doe@example.com"
    }
    

6. 결론

스프링 부트 3와 Hibernate는 자바 개발자가 데이터 관리를 간소화하고 애플리케이션 개발 속도를 높이는 데 큰 도움을 줍니다. 본 글에서 제공한 기본 설정과 예제를 따라 하면, 간단한 CRUD 애플리케이션을 구축할 수 있습니다. 이를 기반으로 더 복잡한 기능도 쉽게 확장할 수 있을 것입니다.

스프링 부트와 Hibernate의 강력한 통합을 활용하여, 효율적이고 유지보수가 쉬운 애플리케이션을 만들어 보세요!

반응형