[java] Spring Data JPA를 사용한 데이터베이스 액세스

Spring Data JPA는 Spring 프레임워크를 통해 데이터베이스에 액세스하기 위한 기술입니다. JPA(Java Persistence API)는 자바 어플리케이션과 관계형 데이터베이스 간의 편리한 데이터 관리를 제공하는 API입니다. Spring Data JPA는 JPA를 좀 더 쉽게 사용할 수 있도록 도와주는 기술입니다.

프로젝트 구성

Spring Data JPA를 사용하기 위해 먼저 프로젝트를 구성해야 합니다. 이 예제에서는 Maven을 사용하여 프로젝트를 설정합니다.

pom.xml 파일 구성

<dependencies>
    <!-- Spring Boot Starter Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- H2 Database -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

application.properties 파일 구성

spring.datasource.url=jdbc:h2:mem:testdb
spring.jpa.show-sql=true
spring.h2.console.enabled=true

엔티티 클래스 정의

Spring Data JPA에서는 엔티티 클래스를 정의해야 합니다. 엔티티 클래스는 데이터베이스 테이블과 매핑되는 클래스입니다.

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

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

    // getters and setters
}

Repository 인터페이스 정의

Spring Data JPA에서는 Repository 인터페이스를 정의하여 데이터베이스 조작을 위한 메서드를 선언합니다.

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

public interface UserRepository extends JpaRepository<User, Long> {

}

서비스 클래스 정의

Repository 인터페이스를 사용하여 데이터베이스 조작을 처리하는 서비스 클래스를 정의합니다.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final UserRepository userRepository;

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

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

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

    // other methods...
}

컨트롤러 클래스 정의

Spring MVC를 사용하여 웹 요청을 처리하는 컨트롤러 클래스를 정의합니다.

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

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

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

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

    @GetMapping("/")
    public List<User> getUsers() {
        return userService.getUsers();
    }

    // other methods...
}

실행

프로젝트를 빌드하고 실행하면 Spring Boot 애플리케이션이 시작됩니다. H2 인메모리 데이터베이스와 연결되며, /users 엔드포인트를 통해 사용자를 생성하고 조회할 수 있습니다.

결론

Spring Data JPA를 사용하면 데이터베이스 액세스를 편리하게 처리할 수 있습니다. 엔티티 클래스, Repository 인터페이스, 서비스 클래스, 컨트롤러 클래스를 구성하여 데이터베이스 조작을 단순화할 수 있습니다. Spring Data JPA의 자세한 사용법은 공식 문서를 참고하시기 바랍니다.