6. Repository 인터페이스 정의만으로 REST API 제공
Query Method : 메소드 선언으로 검색 API 지원
특징
7. Repository 인터페이스 정의만으로 REST API 제공
Query Method : 메소드 선언으로 검색 API 지원
Projection : 데이터 표현 방식을 다양하게 정의/표현 가능
특징
8. Repository 인터페이스 정의만으로 REST API 제공
Query Method : 메소드 선언으로 검색 API 지원
Projection : 데이터 표현 방식을 다양하게 정의/표현 가능
HATEOAS : MetaData 표현 (Model, Link, Resource)
특징
18. @Controller
@RequestMapping("/boards")
public class BoardController {
@ResponseBody // 생성
@RequestMapping(method = RequestMethod.POST)
public Board post(@RequestBody Board board) {};
@ResponseBody // 조회
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Board get(@PathVariable("id") Long boardId) {};
@ResponseBody // 수정
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public Board put(@PathVariable("id") Long boardId,
@RequestBody Contents contents) {};
@ResponseBody // 삭제
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public void post(@PathVariable("id") Long boardId) {};
}
Controller
19. @Service
@Transactional
public class BoardService {
public Board new(Board board){}; // 생성
public Board get(Long boardId){}; // 조회
public Board update(Board board){}; // 수정
public void remove(Long boardId){}; // 삭제
}
Service
그러면
제목이 h로 시작하는 게시글 리스트를 검색하는 요구사항이 있다고 가정하고 URL을 만들어보겠습니다.
그러면 /boards/search/starts-title url에
title 파라미터로 h로 URL을 만들어 요청하면
findByContentsTitleStartsWith 메소드는 Title 컬럼을 like 검색 쿼리로 데이터를 조회한 후에 API로 데이터를 표현합니다.
제가 지금까지 구현체를 하나도 만들지 않고 API를 만들었죠?
여기까지가 Spring Data REST에 기본 사용법이였습니다.
그래서 Spring Data REST를 어떻게 어디에 활용할 수 있을지는 조금 뒤에 이야기하기로 하고
라이브 코딩을 하며 사용법을 더 알아보겠습니다.
스프링 캠프는 라이브 코딩까지.
Deep Dive는 추가
Spring Data REST의 아키텍처 설명
스프링 캠프는 라이브 코딩까지.
Deep Dive는 추가
Spring Data REST의 아키텍처 설명
다들 아는 내용
DispatcherServlet == FrontController pattern
ViewResolver는 제외
설명
Default
추천서 : 스프링 MVC 프로그래밍 (빨간책)
Data REST
책 없음
이미 구현된 Contorller
다른 형태의 Controller
@RepositoryRestController 종류
@RepositoryRestController Diagram
장점입니다.
단순한 생성, 조회, 수정, 삭제에 대한 API를 빠르게 개발할 수 있고 확장이 쉽습니다.
그리고 Spring Data를 사용하는 경우에 쉽게 붙여서 사용할 수 있습니다.
하지만! 보이는게 다가 아닙니다.
제가 장점만 써 놓고 단점은 써놓지 않았는데요. 제가 생각했을때 Data REST는 알아야할 기술이 많습니다.
KSUG 큰 일꾼인 박용권님과 이야기 할때 Spring Data REST를 종합 예술이라고 표현했는데요. 사용하기 쉽고 보기엔 좋지만, 이렇게 알아야할 기술이 많다는 뜻입니다.
Spring Data REST를 어디에 적용할 수 있을지 생각을 해봤습니다.
첫 번째는 의존성이 낮은 도메인에 적합하다고 생각합니다.
예를 들어 커머스 주문 도메인은 상품, 결제, 포인트, 쿠폰 등 다양한 타 도메인에 의존성이 높은 반면 쿠폰이나 포인트는 타 도메인에 의존성이 낮기 때문에 더 적합하다고 생각합니다.
두 번째는 사내 시스템입니다.
Spring Data REST는 data 레이어를 그대로 REST로 표현할 수 있는 기술이라고 말씀드렸는데요.
사내 시스템에서 데이터베이스를 조회하거나 조작해야되는 시스템에 적용해보면 좋을거 같습니다.
그리고 Spring Data REST는 HAL browser라는 REST Client 툴을 디펜던시 추가만으로 제공합니다.
마지막으로 조회만 적용을 해보는건데요.
라이브코딩을 하면서 봤던 ReadOnlyPagingAndSortingRepository를 만들어서 사용하면 될거 같습니다.
마지막으로 조회만 적용을 해보는건데요.
라이브코딩을 하면서 봤던 ReadOnlyPagingAndSortingRepository를 만들어서 사용하면 될거 같습니다.