5.1 데이터 조회 과정
- 사용자가 데이터를 조회해 달라고 웹 페이지에서 URL 요청을 보냄
- 서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달함
- 리파지터리는 정보를 가지고 DB에 데이터 조회를 요청함
- DB는 해당 데이터를 찾아 이를 엔티티로 반환함
- 반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달됨
- 최종적으로 결과 뷰 페이지가 완성돼 사용자의 화면에 출력됨.
5.2 단일 데이터 조회하기
- 중괄호 안에 변수를 써주면 데이터 변수로 사용 됨. 예시) "/articles/{id}"
- 컨트롤러에서 URL 변수를 사용할 때는 중괄호 하나({})만 씀.
- @PathVariable 어노테이션이란?
- URL 요청으로 들어온 전달값을 컨트롤러의 매개변수로 가져오는 어노테이션
- findById()란?
- JPA의 CrudRepository가 제공하는 메서드
- 특정 엔티티의 id 값을 기준으로 데이터를 찾아 Optional 타입으로 반환
- 반환형은 꼭 Optional<클래스명> 타입으로 받아야 함
- .orElse() 메서드를 쓰고 매개변수로 null 값을 넣는 것은 id 값으로 데이터를 찾을 때 해당 id 값이 없으면 null을 반환하라는 뜻
- 모델에 데이터를 등록하는 방법
model.addAttribute(변수타입 변수명, 변수타입 변수명);
- @NoArgsConstructor 어노테이션이란?
- 기본 생성자 코드를 추가해주는 어노테이션
5.3 데이터 목록 조회하기
- 단일 데이터를 조회할 때는 리파지터리가 엔티티를 반환한다면, 데이터 목록을 조회할 때는 엔티티의 묶음인 리스트를 반환함
- findAll() 메서드란?
- 해당 리파지터리에 있는 모든 데이터를 가져오는 메서드
- findAll() 메서드가 반환하는 데이터 값은 Iterable
- 이를 해결하는 방법은?
- 캐스팅(형번환) 하기
- 캐스팅(casting)이란?
- 데이터 타입을 변환하는 것
- 업캐스팅(upcasting) : 넓은 범위로 해석하는 것(고양이 -> 생물)
- 다운캐스팅(downcasting) : 좁은 범위로 해석하는 것(생물 -> 동물)
- findAll() 메서드가 반환하는 데이터 타입 Iterable<클래스>을 List<클래스>로 다운 캐스팅 할 수 있음
2. 변수의 타입을 findAll() 메서드가 반환하는 타입으로 맞추는 방법
- List<클래스>을 Iterable<클래스>로 업캐스팅하면 오류를 해결할 수 있음
3. Iterable 인터페이스가 익숙하지 않다면 많이 사용하는 ArrayList를 이용할 수도 있다.
- 오버라이딩(overriding)이란? 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것
- 머스테치 변수가 데이터 묶음일 경우에는 그 안쪽에 있는 코드를 반복 실행 한다.
'개인 공부 > BackEnd Study' 카테고리의 다른 글
[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 9 - (0) | 2024.03.28 |
---|---|
[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 8 - (0) | 2024.03.28 |
[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 4 - (0) | 2024.03.27 |
[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 3 - (0) | 2024.03.27 |
[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 13 - (0) | 2024.03.24 |