- 이번 시간에는 데이터베이스에 들어있는 데이터에 대한 SELECT 작업을 수행해보도록 하겠습니다.
- 우선 Postman을 통한 post 요청으로 다음과 같이 데이터베이스에 데이터를 추가해주었습니다.
- 이후 이전 시간에 생성하였던 DummyController 클래스에 아래의 코드를 추가해주었습니다. 여기서 '{ }'와 @PathVariable 어노테이션은 주소를 통해 파라미터를 전달받기 위해 사용하였습니다.
- 이제 우리는 파라미터를 전달받은 뒤 해당되는 데이터를 간단하게 출력해보는 작업을 수행할 텐데, 만약 전달된 파라미터에 부합하는 알맞은 데이터가 없다면, 즉 위를 예로 들자면 해당되는 id를 갖는 데이터가 없다면 이는 널(Null) 값이 될 것이며 이러한 결과를 반환한다면 프로그램에 문제가 생기게 될 수도 있을 것입니다.
- 따라서 우리가 사용하는 JpaRepository 클래스에서는 데이터를 가져올 때, 예외처리를 수행할 수 있도록 다음과 같이 함수의 반환 값을 Optional 객체로 설정해두었습니다.
- 위처럼하면 데이터베이스에 저장되어 있지 않은 id 값이 전달되더라도 널(Null) 값이 아닌 새로운 User 객체가 생성되어 반환될 것입니다.
- 또다른 방법으로는 다음과 같이 예외처리를 통해 오류 페이지와 함께 원하는 문구를 출력할 수도 있습니다.
- 이후 실행시킨 뒤 주소를 입력해보면 다음과 같이 출력되는 것을 확인할 수 있습니다.
- 위처럼 작성할 수도 있지만 좀 더 간결하게 람다식으로도 작성할 수 있습니다.
현재 우리가 작성한 코드에서는 웹 브라우저에게 데이터를 반환할 때 객체를 반환하고 있습니다. 이럴 경우 웹 브라우저는 위처럼 이를 JSON으로 받게 되는데 이러한 동작이 가능한 이유는 스프링 부트의 MessageConverter가 Jackson 라이브러리를 호출하여 오브젝트를 JSON으로 변환하여 전달해주기 때문입니다.
- 이번에는 간단하게 모든 데이터를 출력하는 함수를 구현해보겠습니다.
- 역시 JSON의 형태로 출력되는 것을 확인할 수 있습니다.
- 이번에는 페이징(Paging)을 구현하기 위해 다음과 같이 코드를 추가해주었습니다.
- 페이징이란 말그대로 모든 데이터를 한 번에 보여주지 않고 페이지를 나눠 쪽수별로 제공하는 기능을 말합니다.
- 이때 우리는 위처럼 페이지의 크기를 설정하여 출력되는 데이터의 양을 조절할 수도 있으며 정렬 기준, 정렬 방식을 설정하여 우선 순위를 설정할 수도 있습니다.
- 이러한 기능을 개발자가 직접 구현하여 사용할 수도 있겠으나, JPA에서는 이를 편하게 사용할 수 있도록 Pageable이라는 객체를 제공하며 우리는 해당 객체를 사용하여 위처럼 간단한 Pagination을 수행할 수 있습니다.
- 위 코드의 결과는 다음과 같습니다.
- 페이징 설정을 통해 크기를 2로 정렬 기준은 id 값으로, 정렬 방식은 내림차순 정렬하였기 때문에 위와 같은 결과가 출력된 것을 확인할 수 있습니다.
- 만약 여기서 실질적인 데이터 부분만 출력하고 아래 추가로 붙는 부분은 생략하고 싶다면 다음과 같이 코드를 수정할 수 있습니다.
📌 References
'🚗 Backend Toy Project > 스프링 부트 게시판' 카테고리의 다른 글
[스프링부트 게시판] 11. DELETE 테스트 (0) | 2022.05.05 |
---|---|
[스프링부트 게시판] 10. UPDATE 테스트 (0) | 2022.05.03 |
[스프링부트 게시판] 8. 회원가입을 위한 insert 테스트 (0) | 2022.05.02 |
[스프링부트 게시판] 7. 테이블 생성 (0) | 2022.05.02 |
[스프링부트 게시판] 6. yml 설정하기 (0) | 2022.05.01 |