티스토리 뷰
Repository 활용
Restaurant 정보를 List로 관리하는데 가게 목록 출력할 때, 가게 상세 정보 출력할 때 모두 List를 사용하기 때문에 중복이 된다.
이러한 Restaurant의 collection을 Repository로 옮겨주어 효율적으로 만들어준다.
Repository는 UI Layer에 속하지 않고 domain Layer에 속한다.
따라서 domain package 안에 RestaurantRepository.java 파일을 생성해준다.
1. Controller에서는 Repository에 있는 restaurant 정보를 받아와서 쓸 수 있도록 list method를 다음과 같이 바꿔준다.
repository라는 field도 추가해준다.
findAll method를 RestaurantRepository.java에 생성해준다.
detail method 역시 list method와 유사하게 형식을 바꾸어준다.
2. Restaurant가 엄청나게 많을 경우를 고려했을 때 findAll()은 효율적이지 못하다.
이를 해결하기 위해 findById(id)를 이용해 해당하는 id의 restaurant만 얻으면 훨씬 효율적이다.
3. List<Restaurant> restaurants = new ArrayList<>(); 의 경우에는 findAll(), findById()에서 중복이기 때문에 field로 옮겨준다.
그리고 add해주는 값들은 Repository를 생성할 때 넣어주도록 처리한다.
findById method에서는 restaurants field를 사용하기 때문에 바로 반환해주는 것으로 수정한다.
detail method의 내용도 findById를 통해 가져 온 가게 정보 하나만 반환해주도록 수정한다.
Repository를 사용하면서 단순한 형태로 바뀌게 되었다.
UI Layer는 사용자와 내부의 domain model들이 서로 상관없도록 징검다리 역할만 하게 코드가 들어간다.
실제로 이것들을 활용하는 것들은 domain model 쪽에 있게 된다.
따라서 Controller는 단순하고, 이를 처리해야 하는 것들은 domain Layer에서 처리하게 된다.
'Web > Spring Boot' 카테고리의 다른 글
Controller를 이용해 가게 상세 가져오기 (0) | 2020.05.02 |
---|---|
Controller를 이용해 가게 목록 가져오기 (0) | 2020.04.30 |
REST API (0) | 2020.04.29 |
TDD의 활용 (0) | 2020.04.29 |
테스트 주도 개발 (0) | 2020.04.29 |
- Total
- Today
- Yesterday
- CSS
- 플로이드워셜
- SCSS
- controller
- 투포인터
- frontend
- 다익스트라
- 위상정렬
- html
- javascript
- webpack
- js
- 자바스크립트
- 최소공통조상
- 웹팩
- BFS
- 최소스패닝트리
- springboot
- 파이썬
- Java
- python
- 인프런
- 알고리즘
- MST
- 고차함수
- 에라토스테네스의체
- 백준
- BOJ
- heapq
- 1급객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |