페이지네이션 실습

김소희·2023년 4월 20일
1

JDBC를 배우고부터는 실습과제는 손을 댈 엄두도 잘 나지 않는다.
코드를 고치고 고쳐봐도 제대로 실행되지 않아서 지우고 새로 템플릿을 클론받아서 다시 풀어보기를 반복하다보면 결국 시간이 다 지나서 페어의 도움으로 정답을 알게된다.

처음에는 정답을 보고 그대로 따라서 타이핑하고, 다시 코드를 보면서 이해하려고 노력하고,
이해가가면 익숙해지려고 다시 타이핑해보는 식으로 공부중인데 어떻게든 혼자서 머리를 싸매고 고민해서 해결하고 싶은 마음은 굴뚝같지만 진도를 생각하면 코드를 이해할 수 있게 된 것 만으로도 다행이라 여겨진다. 내가 잘 하고 있는 것인지 의문이 생길 때도 있지만, 현재는 따라치더라도 반복하면서 익숙해지는 방법말고는 없다는 생각으로 불안을 떨쳐버리고 있다.

오늘의 실습내용은 get요청이 왔을때 페이지네이션을 구현하는 것이다.
Spring에서 지원하는 페이지네이션 API을 이용하면 쉽게 해결가능하다는 힌트도 있었다.
그래서 검색을 하다가 정답을 알려주는 블로그를 여럿 발견해서 참고해서 풀다가 오류를 만났다.

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:....
org.springframework.beans.factory.BeanCreationException:...
Paging query needs to have a Pageable parameter!...

한글로 번역해보자면
MemberService 클래스의 생성자에서 MemberRepository 를 주입하는데 실패했고,
이유는 MemberRepository 빈의 초기화 과정에서 예외가 발생했다.
MemberRepository 빈생성시 findAllByOrderByMemberIdDesc 메서드를 호출할 때 Paging query needs to have a Pageable parameter!라는 메시지와 함께
적합하지 않거나(illegal) 적절하지 못한(inappropriate) 인자를 메소드에 넘겨주었을 때 발생하는 IllegalArgumentException 예외가 발생하였다.

매개변수도 제대로 타이핑 되어 있어서 코드를 더 찾아보니 임포트가 잘못되어 있었다.
import java.awt.print.Pageable; 를
import org.springframework.data.domain.Pageable; 로 고치니 해결되었다.

그후 페어 시간이 왔는데 이번주에 예비군을 다녀와서 저녁늦게까지 봐도 수업 진도를 쫓아오지도 못했다고 한다. 매일 수업을 열심히 들어도 다 알지 못하는데 얼마나 힘겨울지 공감이 되어서 그동안 배운 내용들을 내가 가르쳐주겠다고 무엇이 어려운지 물어보았는데, 무엇을 모르는지도 모를 정도로 모르겠다는 말에 몇일 전에 똑같은 고민을 하던 내 모습이 떠올랐다.
그래서 배운내용을 전부 훑어서 API 계층에서 쓰이는 컨트롤러와 DTO 객체의 쓰임새, 서비스 계층과 도메인엔티티 클래스, 변환을 도와주는 매퍼, 예외가 발생했을 때의 처리과정들의 흐름들을 쭉 설명해주었다.

페어가 내 설명이 너무 이해가 잘 되서 돈을 줘야 할 것같다는 말을 해서 웃음이 절로 나왔다.
내 모습을 보니 게으른 자신의 모습이 반성되고, 자극이 되서 의욕도 생겨났다고 말했는데, 나도 그 말을 들으니까 의욕이 생겨나서 요즘 코드에서 자주 보이지만 잘 다루지 못하는 스트림과 옵셔널을 다시 공부해야겠다는 생각만 하고 미뤄두었던 것을 해냈다.

나는 열심히 공부하고 있지만 모르는 것이 많다. 뭐든지 다 잘하는 사람이 되고 싶지만 그보다는 함께 하고 싶은 사람이 되는 것이 더 중요한 것 같다. (물론 공부도 꾸준히 해야한다!)
모르면 모른다고 순순히 털어놓으면서 배우려는 노력을 하고 있으면 도와주고 싶은 마음이 절로 드는 사람이 알려주게 되지 않을까. 오늘의 나처럼.

p.s.
'완성된 코드가 없으면 아무것도 만들어내지 못하는데 이래가지고 내가 뭘 만들 수 있지? 내가 개발자가 될 수 있는 것 맞나?' 싶은 생각이 들어서 힘들어 하고 있었다.
사실 코드를 따라치기만 하는건 전혀 힘든일이 아닌데 이 방법이 맞는지 의문이 들어도 혼자 공부하고 있으니 내가 올바른 방향으로 가고 있는 것인지 확인할 방법도 없고 불안감이 힘들게 했었다.
근데 남자친구가 고민을 듣더니 그럼 코드를 보고 고양이 이름을 호출하는 프로그램을 만들 수 있겠냐고 물어보아서 "어쩌면 할 수 있을 것 같긴 한데, 하다가 막히면 찾을 수 없어서 안될 지도 모르겠다"고 대답했다.

그말을 들은 남자친구는 모든 개발자가 이런 생각을 하는 시기가 있었을 것 같다고 자기도 똑같이 생각했었다고 현업에서도 오픈 소스를 보고 만들어 내는 식으로 개발할 때가 많으니 코드를 보고 만들어 낼 수 있으면 된다고 처음부터 프로그래밍적으로 사고하는게 쉽지 않지만 처음엔 외워지지가 않으니 그냥 보고 따라치고, 나중엔 내가 원하는 것으로 바꿔서 따라치다보면 어느 순간에 번뜩이는 순간이 올 것이라고, 내가 엄청 잘하고 있다는걸 알고 있다고 이야기했다.

그말을 들으니 마음이 참 따뜻해지면서 곧바로 애니메이션이름을 넣으면 등장하는 주인공이나 고양이 이름을 응답하는 프로그램을 만들어봐야겠다는 생각이 들었다.

profile
백엔드 개발자 소희의 모험

1개의 댓글

comment-user-thumbnail
2023년 5월 3일

템플릿을 반복적으로 받아서 설치해보고 다시 코드를 쳐보고 반복하면서 조금씩 그 학습 내용을 자기걸로 만들어 가고 계실꺼에요. ^^
마지막까지 화이팅입니다!

답글 달기