오늘은 Git-Kraken 을 활용하여 어제 역할을 분담한 대로 각자 개발을 시작해나갔다.
ERD와 API명세를 세세히 적어둔 덕에 Entity 나 DTO 를 작성하는 시간도 금방이었고, Controller 와 Service 구현도 기억을 더듬어가며. 모르는 부분은 찾아가며 그래도 큰 문제 없이 진행할 수 있었다. Repository와 관계설정을 만나기 전 까지는....
혼자서 프로젝트를 진행했을 때는 supabase 통해 postgre DB를 연결하여 바로바로 테스트 해보고, 여기저기 스크립트를 옮겨가며 각 객체에서 전달할 내용을 수정하곤 했었는데 다른 팀원들과 협업하며 진행하다보니 내 맘대로 추가/제거를 할 수도 없고, 수시로 이래저래 요청할 수도 없으니 정말 필요한 기능인가 이렇게 진행되는게 맞나 다시 한번 생각해보게 되었다.
그 중 내가 제대로 이해하지 못했던 부분도 팀원분 덕에 다시 이해하게 되었는데
그동안 피드백에서도 난 1:N 으로 단방향 구성한것 같은데 왜 자꾸 양방향으로 설정할 필요가 있느냐고 여쭤보셔서 ?_? 했었는데 문제는 여기 있었다.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feed_id")
var feed:Feed
위의 @ManyToOne 어노테이션을 붙이는 것은 '그치 1:N 의 N쪽에 해당하는 녀석이니까..' 하고 이해하면서 1 쪽에도 반드시 @Mapping 어노테이션을 붙여줘야 하는 것으로 착각하고 있었던 것이다. 설명을 듣고 나니 아하.. 그랬구나... 그래서 계속 참조관계에 대해 짚어주셨구나.. 하고 납득하고는 즉시 수정. 제대로된 단방향 관계로 설정해두니 굳이 Feed 측에서 날 봐달라고 안해도 되서 편했다. 만약 필요하면 그쪽에서도 추가를 해주면 되니까!
비슷한 프로젝트 벌서 세 번째 해본다고 살짝 자만해있기도 했었는데 다시 한 번 정신차릴 수 있었다. 한줄 한줄 제대로 이해하고 있는가? 왜 써야하는지 안써도 되는건 아닌지 고민해보고 합리적 이유를 찾아 사용하도록 경계하자..!