프로그래밍 언어/JAVA, SPRING

[SPRING BOOT] JPA

doomole 2024. 7. 17. 17:28
728x90

소개

Spring Data JPA는 데이터베이스 작업을 간소화하는 강력한 도구입니다. 이 가이드는 Spring Boot와 JPA를 통합하여 CRUD 애플리케이션을 구축하는 방법을 설명합니다.

 

 

프로젝트 설정

Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. "Spring Web", "Spring Data JPA", "H2 Database" 등의 의존성을 추가합니다.

 

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

 

 

엔티티(Entity) 클래스 생성

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

 

User.java

package com.example.demo;

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) 인터페이스 생성

CRUD 작업을 처리하기 위해 Spring Data JPA 리포지토리를 생성합니다.

 

UserRepository.java

package com.example.demo;

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

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

 

 

서비스(Service) 클래스 생성

비즈니스 로직을 처리하는 서비스 클래스를 생성합니다.

 

UserService.class

package com.example.demo;

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

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

	// 전체 User 조회
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

	// id값으로 User 조회
    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

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

	// id값으로 User삭제
    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

 

 

컨트롤러(Controller) 클래스 생성

HTTP 요청을 처리하는 REST 컨트롤러를 생성합니다.

 

UserController.java

package com.example.demo;

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 UserService userService;

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

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

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

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        User existingUser = userService.getUserById(id);
        if (existingUser != null) {
            existingUser.setName(user.getName());
            existingUser.setEmail(user.getEmail());
            return userService.saveUser(existingUser);
        } else {
            return null;
        }
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }
}

WEB_URL + /users URL을 입력하여 전체 계정을 조회합니다.

 

 

문의사항이나 피드백은 댓글로 남겨주세요.