TIL - @Setter, @OneToMany 에너테이션 사용 | 좋아요 기능 구현 시 api | 객체 비교 방법

su·2023년 7월 25일
0

TIL

목록 보기
49/93
post-thumbnail

과제 내용 정리하기

@Setter 에너테이션 사용

@Setter는 해당 필드마다 set 할 수 있는 메서드가 만들어진다.
하지만 @Setter 에너테이션을 사용해서 모든 필드에 setter 메소드를 만들어두지 않고,
필요한 필드만 값을 수정할 수 있도록 필요한 setter 메소드만 만들어서 사용해야 한다 !

@OneToMany 에너테이션

mappedBy 속성을 넣어주어야 하는데, 여기에는 연관 관계의 주인이 누구냐!! N 쪽이니까 그것을 표시해주는 것 (즉 1쪽에 선언된 N쪽 엔티티의 필드명을 적어주는 것이다)

좋아요 기능 구현 시

하나의 메소드 만으로, 좋아요 등록/취소를 한 번에 작성하는 경우가 있다.
하지만 Restful 하지 못하다 ..!
Restful 하다는 조건 중에 stateless가 있는데, 상태에 의존하지 않아야 한다는 것이다.
만약 api 동일 요청에 있어서, 이전 요청에 있어서 상태값이 변경된다면, Restful한 api라고 할 수 없다..!
좋아요 등록 혹은 취소는 클라이언트에서 요청하도록 한다 !
→ 등록과 취소는 다르게 api를 작성하도록 하자

객체를 비교하는 방법

게시글 수정 및 삭제와 댓글 수정 및 삭제, 좋아요 등록/취소 등의 경우에는 사용자가 해당 게시글 혹은 댓글 혹은 좋아요의 당사자인지 판별해주어야 한다.
JWT로부터 가져온 User와, 각 게시글이나 댓글, 좋아요에 등록된 User 자체로 비교하려고 하니 비교가 되지 않고 다른 사용자라는 오류가 발생했다.
나는 분명히 작성한 사람으로 로그인을 해서 수정을 요청했는데 .. 이유가 뭘까 ?
단순 .equals() 메소드를 사용하니 안되는 것 같았다.
디버깅을 해보니, JWT로부터 가져온 User와, 작성자인 User의 객체 아이디 값(?) 이 다르게 나왔다.
(이래서 디버깅이 중요하구나 ..!)

내가 원하는 대로 User 자체를 비교해주기 위해서는 어떻게 할 수 있을까?
Lombok 에너테이션 중에 @EqualsAndHashCode 라는 에너테이션이 있다.
이 에너테이션을 비교에 사용하려는 User 클래스 위에 달아주면 가능하다 ..!

이전에는 저 에너테이션을 몰라서, unique 값을 true로 설정한 User의 Username으로 비교했었다.
이제는 그냥 User끼리 비교해도 비교가 가능하다 !

profile
(❁´◡`❁)

0개의 댓글