Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[4주차 과제] 서지현 #50

Open
wants to merge 78 commits into
base: ji-hyeon97
Choose a base branch
from

Conversation

ji-hyeon97
Copy link

이번 주에 어떤 작업을 했는지 설명해주세요.

부족한 부분이 있지만 figma 에서 대략적으로 제공해주신 모든 API를 다 만들어 보았습니다.

Post /api/user/signup (회원가입)
Post /api/user/login (로그인)
GET /api/item/category (카테고리 목록화)
Post /api/item (중고거래 글쓰기)
GET /api/item (홈화면, 상품 목록)
Get /api/item/{itemId} (상품상세보기)
Get /api/item/{userId}/list(000 님의 상품목록)
Post /api/like/{itemId} (좋아요 기능)
Get /api/like/user (나의 관심목록)
Patch /api/item/{id}/status (상품상태수정)
Patch /api/item/{id} (상품정보 수정)
Delete /api/item/{id} (상품삭제)


이번 주는 어떻게 학습했나요? 아래 질문에 짧게 답변주세요!

이번 주에 학습에 투자한 시간

  • 3시간 정도 ?? 인것 같습니다

어려움을 겪는 부분

  • 좋아요 기능시 좋아요 하기(post - 새로운 리소스 생성), 좋아요 취소(delete - 기존의 리소스 삭제) 의 기능이 포함되어 있어서 어떠한 HTTP request method를 사용해야 할지 고민을 했습니다. 일단 멱등성과 현재의 좋아요 엔티티 의 필드를 살펴본 결과 post method가 개념적으로 제일 적절하다고 생각이 되었습니다. 만일 좋아요 엔티티에 필드 값이 조금 더 많을 경우 patch 개념이 가장 적절한 것 같다고 생각되었습니다.
  • 상품수정하기 특정 필드에 값을 안넣고 요청하면 병합이 아닌 변경감지 개념을 적용했음에도 불구하고 DB에는 null로 update가 되는 것을 알 수 있었습니다. 김영한님 강의에 따르면 변경감지는 원하는 속성만 선택할수 있다는 것을 이해가 되지만 사용자가 어떤 필드 값만 입력해서 보낼지 알 수가 없는 문제가 있었습니다. 당근마켓에 직접 글 올리고 수정해보니 그냥 유효성 검사로 사용자가 모든 값을 입력하게 만들었습니다. 변경감지가 병합 보다는 원하는 속성을 선택하여 변경할 수 있는 자유도는 있지만 유효성 검사가 제대로 진행되지 않으면 둘다 null로 업데이트 되어서 위험한것 같습니다.
  • 객체지향 쿼리, API 호출시(여러개의 테이블이 조인된) 쿼리 나가는거 미리 파악하기, 등이 아직 부족하고 어려움이 있습니다.

스터디 개선되었으면 하는 점

  • X

@YOONSEOUNGHWAN
Copy link
Collaborator

FeedBack

병합이 아닌 변경감지 개념을 적용했는데 null Data가 들어간다.

우선, 변경감지를 통해 기존 스냅샷과 다를 경우 Update 쿼리가 나가는 것을 확인할 수 있습니다.
log를 통해 확인해보세요!

하지만, 이렇게만 적용할 경우 선택되지 않은 필드데이터에는 기존 값의 Update쿼리가 나가지 않기 때문에 Entity 자체에서 변경된 부분만 쿼리가 나갈 수 있도록 도와주는 어노테이션이 있습니다.

@DynamicUpdate 에 대해서 이번 기회에 학습하면 좋을 것 같습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants