이번 일주일 동안은 새로운 프로젝트를 진행하게 되었다!
지난 번에 했던 프로젝트에서 기능들이 좀 더 추가된 프로젝트였다.
새로운 프로젝트를 시작할 때는 늘 긴장된다.
잘 할 수 있을지가 늘 고민이고 걱정이 된다.
좋은 팀원분들을 만나서, 그냥 주어진 역할만 하고 끝내고 싶지 않았고,
계속해서 할 수 있는 부분들을 찾아내서 더 더 하고싶었다.
1) 필요한 테이블 생성 & 연관관계 매핑: 필요한 테이블을 만들고, 그와 연관된 테이블들 간의 관게를 매핑하는 것이 중요하다. 처음에 작업을 잘 해둬야 이후에 원하는 코드를 작성하기가 수월하다. 예를 들어, 사용자와 게시물 테이블의 연관 관계를 매핑한다면, 사용자는 게시물을 0개부터 어러개 작성할 수 있다. 게시물은 하나의 사용자에게만 할당되어야 하며, 사용자가 없이는 게시물이 작성될 수 없다.
따라서 사용자와 게시물은
사용자 1 1 ---- 0 N 게시물
이런 관계가 된다 !
2) 백과 프론트 연결: 서버를 잘 구축해두고 나서 프론트와 연결 할 때가 늘 어렵다. 원하는대로 서버를 만들어둬도 프론트쪽에서 넘어가지 않는 경우가 많아서.. 해보면서 느꼈던 점은, 프론트와 백의 소통을 위해서 초반에 api 명세서를 정말 잘 !! 작성해두어야 한다는 점이다. 보낼 method와 url 을 미리 정리해두고 코드 작업을 진행하면 서로 코드를 짜는 것에 문제는 없을 것 같다. 하지만 이번에 작업하면서 오류를 몇 번 본적이 있어서, method와 url을 잘 매핑시켜주고, 데이터를 전달한다면 전달하는 데이터의 타입을 서버쪽에서 받는 데이터의 타입과 일치시켜주어야 한다. 그리고 값을 input이나 textarea 등의 태그에서 받아온다면 값을 잘 가져오는지도 프론트의 console에서 확인해주면 좋다.
3) 게시글이나 댓글 삭제 시 필요한 부분까지 함께 삭제: 게시글과 댓글은 양방향 관계이다. 게시글이 삭제될 때, 댓글들도 함께 삭제가 되어야 해서 게시글에서 Cascade 속성을 주었다.
문제는 무엇이냐면 게시글 좋아요와 댓글 좋아요이다. 게시글 좋아요 테이블과, 댓글 좋아요에서 각각 게시글과 댓글을 조회할 수 있는 단방향 관계로, 게시글 테이블과 댓글 테이블에서 Cascade 속성을 줄 수 없었다. 따라서 게시글 삭제와 댓글 삭제 시, 해당 레파지토리에서 각 게시글과 댓글에 대한 데이터를 찾아 삭제해주어야 했다.
필요한 테이블을 정하고, 연관 관계를 매핑하는 것은 언제 생각해도 어려운 것 같다.
이제 기본적으로 게시물-댓글-게시물좋아요-댓글좋아요의 관계는 익숙해진 듯 하다.
다음 프로젝트 때도 해당 기능을 사용한다면, 잘 구현할 수 있을 것 같다.
하지만 서버를 구축해두고 프론트와 연결하는 것은 .. 완벽하게 익숙해지진 못할 듯 하다..
그래도 계속 하다 보면 점차 나아질 것 같다 !