CRUD는 데이터를 처리하는 기본적인 네 가지 연산(Create, Read, Update, Delete)을 의미한다. 웹 애플리케이션 개발 시, 대부분의 기능이 이 CRUD 연산을 기반으로 한다.
스프링 프레임워크에서는 JPA를 사용하여 쉽게 CRUD 연산을 구현할 수 있다. JPA(Java Persistence API)는 자바 ORM(Object-Relational Mapping) 기술의 표준이다. ORM은 객체 지향 프로그래밍과 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 기술이다.
스프링 데이터 JPA는 CRUD 연산을 위한 기본적인 메서드를 제공하는 JpaRepository 인터페이스를 제공한다. 이 인터페이스를 상속받아서 사용한다.
public interface PostRepository extends JpaRepository<Post, Long> {}
비즈니스 로직을 처리하는 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);
}
}
사용자 요청을 처리하는 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번이상해가면서 새롭게 작성하다보니 새롭게 느낀점이 많아지기에 작성을 하게 되었다...역시 손으로 직접 따돱따돱써봐야지 알게되는것인거 같다