11월 17일-스프링으로 CRUD 구현하기

Yullgiii·2023년 11월 17일
0
post-thumbnail

1. CRUD란? 🚀

CRUD는 데이터를 처리하는 기본적인 네 가지 연산(Create, Read, Update, Delete)을 의미한다. 웹 애플리케이션 개발 시, 대부분의 기능이 이 CRUD 연산을 기반으로 한다.

2. 스프링에서의 CRUD 구현 🚀

스프링 프레임워크에서는 JPA를 사용하여 쉽게 CRUD 연산을 구현할 수 있다. JPA(Java Persistence API)는 자바 ORM(Object-Relational Mapping) 기술의 표준이다. ORM은 객체 지향 프로그래밍과 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 기술이다.

2.1. JPA Repository 🚀

스프링 데이터 JPA는 CRUD 연산을 위한 기본적인 메서드를 제공하는 JpaRepository 인터페이스를 제공한다. 이 인터페이스를 상속받아서 사용한다.

public interface PostRepository extends JpaRepository<Post, Long> {}

2.2. Service Layer 🚀

비즈니스 로직을 처리하는 Service 계층에서는 Repository를 주입받아 CRUD 연산을 수행한다.

@Service
public class PostService {

    private final PostRepository postRepository;

    public PostService(PostRepository postRepository) {
        this.postRepository = postRepository;
    }

    public Post create(Post post) {
        return postRepository.save(post);
    }

    public Post read(Long id) {
        return postRepository.findById(id).orElseThrow();
    }

    public Post update(Post post) {
        return postRepository.save(post);
    }

    public void delete(Long id) {
        postRepository.deleteById(id);
    }
}

2.3. Controller Layer 🚀

사용자 요청을 처리하는 Controller 계층에서는 Service를 주입받아 사용자의 요청에 따른 적절한 CRUD 연산을 수행한다.

@RestController
public class PostController {

    private final PostService postService;

    public PostController(PostService postService) {
        this.postService = postService;
    }

    @PostMapping("/post")
    public Post create(@RequestBody Post post) {
        return postService.create(post);
    }

    @GetMapping("/post/{id}")
    public Post read(@PathVariable Long id) {
        return postService.read(id);
    }

    @PutMapping("/post")
    public Post update(@RequestBody Post post) {
        return postService.update(post);
    }

    @DeleteMapping("/post/{id}")
    public void delete(@PathVariable Long id) {
        postService.delete(id);
    }
}

3. 회고 🚀

저번에 배웠던 문제이긴하지만 과제를 롤백을 3번이상해가면서 새롭게 작성하다보니 새롭게 느낀점이 많아지기에 작성을 하게 되었다...역시 손으로 직접 따돱따돱써봐야지 알게되는것인거 같다

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글