스프링 부트, 입문! 11

윤현우·2022년 11월 20일
0

스프링 부트, 입문!

목록 보기
8/18
post-thumbnail

데이터 조회하기 with JPA
이번 강의에서는 DB에 저장된 데이터를 웹페이지에서 확인해본다.

Read

데이터 조회 과정

  1. 사용자가 웹페이지를 통해 데이터 요청

  2. 요청 URL을 Controller가 받아 받아진 URL에서 찾고자 하는 데이터의 정보를 Repository에게 전달

  3. 전달받은 Repository는 DB에게 요청을 보낸다.

  4. DB는 해당 Data를 찾아 Entity로 반환한다.

  5. 받아진 Entity는 Model을 통해 View로 전달된다.

  6. 최종적으로 결과 페이지가 사용자에게 보내진다.

URL 요청받기

Id로 데이터 가져오기

@GetMapping("/articles/{id}")

  • Controller 에서 GetMapping을 활용하여 URL을 요청 받는다.
  • URI 템플릿을 지정하고, @PathVariable 어노테이션을 사용하여 URI의 특정 부분에 접근한다.

@PathVariable Long id

  • @PathVariable 어노테이션은 메서드 인자에 사용되어 URI 템플릿 변수의 값을 메서드 인자로 할당하는데 사용된다.
  • /articles/20으로 접속하게 되면 @PathVariable이 달려있는 인자의 값이 20으로 할당된다.

articleRepository.findById(id).orElse(null);

  • Repository에서 id를 찾는 메서드
  • CrudRepository에 있는 메서드
  • orElse(null)은 해당 id가 없으면 null을 출력해준다.
  • 찾아온 id는 articleEntity에 Entity형식으로 받는다.

모델에 데이터 등록하기

view 페이지에서 사용하기 위해 데이터를 등록한다.

public String show(@PathVariable Long id, Model model)

  • 모델 형식을 사용하기위해 model을 파라미터에 넣는다.

model.addAttribute("article", articleEntity)

  • articleEntity의 값을 article이라는 이름의 model로 등록한다.

뷰 페이지 연결

view페이지에 연결 시킨다.

return "article/show";

  • article/show 라는 html파일로 view페이지를 연결 시킨다.

show.mustache

실행 결과

  • 우리가 직접 넣은 데이터 값이 나오지만 아무튼 localhost:8080/articles/1000으로 id값을 직접 지정해 주소를 호출하면 show.mustache 페이지가 나온다.

Model에서 받은 데이터를 페이지에 연결하기

우리가 model에 넣은 데이터들을 뷰 페이지에서 사용하려면 뷰 페이지에서 article Entity를 사용해야 한다.

이런 식으로 mustache 형식을 이용하여 Entity 값을 불러온다.

실행결과

articles/new 페이지에서 데이터를 입력해 DB에 저장 시키고 articles/1 주소를 통해 입력된 데이터를 반환할 수 있다.

하지만,

두둥..
서버 내부에서 에러가 났다.

에러를 찾아보니..

entity에 기본 생성자가 없다는 것을 알 수 있었다.

파라미터가 없는 생성자가 없었기 때문에 기본 생성자를 추가해주는 어노테이션을 추가 했다.

@NoArgsConstructor

  • default 생성자를 추가해주는 어노테이션

다시 실행 시켜보니..

입력했던 데이터 값들이 잘 나왔다!!

이로써 MVC,JPA, 그리고 DB의 상호작용을 이해할 수 있었다.


References (참고 자료)
https://www.inflearn.com/course/%EA%B0%9C%EB%85%90%EC%8B%A4%EC%8A%B5-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%9E%85%EB%AC%B8
https://ocblog.tistory.com/46

profile
개발자가 되는 그날까지

0개의 댓글