본문 바로가기
개인 공부/BackEnd Study

[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 5 -

by 킴도비 2024. 3. 27.

5.1 데이터 조회 과정

  1. 사용자가 데이터를 조회해 달라고 웹 페이지에서 URL 요청을 보냄
  2. 서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달함
  3. 리파지터리는 정보를 가지고 DB에 데이터 조회를 요청함
  4. DB는 해당 데이터를 찾아 이를 엔티티로 반환함
  5. 반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달됨
  6. 최종적으로 결과 뷰 페이지가 완성돼 사용자의 화면에 출력됨.

 

 

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
  •  이를 해결하는 방법은?
  1. 캐스팅(형번환) 하기

  •  캐스팅(casting)이란?
    • 데이터 타입을 변환하는 것
    • 업캐스팅(upcasting) : 넓은 범위로 해석하는 것(고양이 -> 생물)
    • 다운캐스팅(downcasting) : 좁은 범위로 해석하는 것(생물 -> 동물)
  • findAll() 메서드가 반환하는 데이터 타입 Iterable<클래스>을 List<클래스>로 다운 캐스팅 할 수 있음

 

2. 변수의 타입을 findAll() 메서드가 반환하는 타입으로 맞추는 방법

  • List<클래스>을 Iterable<클래스>로 업캐스팅하면 오류를 해결할 수 있음

 

3. Iterable 인터페이스가 익숙하지 않다면 많이 사용하는 ArrayList를 이용할 수도 있다.

  • 오버라이딩(overriding)이란? 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것

 

  • 머스테치 변수가 데이터 묶음일 경우에는 그 안쪽에 있는 코드를 반복 실행 한다.