목록전체 글 (358)
Just Do IT!
저번주에 백엔드 기능을 거의 구현했다고 했는데,프론트랑 연동하면서 수정할 부분을 발견해서 중간중간 수정하는 부분이 많았다.확실히 백엔드와 프론트를 다함께 진행하는 프로젝트 자체가 어렵다는 걸 알게 되는...그런 주간이었다. 1. 백엔드 버그 수정팀원 분이 알려주신 버그인데, 확실히 db와 연관된 걸 조금 더 배워야 하고 공부할 게 많다는 걸 느낀 날이었다.우리 프로젝트에서 연관된 DB가 많은데, 만약에 상위 DB의 data를 삭제하면 하위 DB의 data들도 모두 삭제되어야 했다. 내가 맡은 부분으로 예를 들어보자면,문제집 삭제 → 문제집 댓글 삭제 → 댓글 좋아요 삭제 → 북마크 삭제 → 문제집의 문제 삭제 → 스터디에 추가한..
이번 프로젝트에서는 소셜 로그인이 있기 때문에 쿠키에서 id를 받아와서 로그인 여부를 판단하고 있다.그런데 한 가지 문제점이 생겼다.header에 유저 정보를 가져와야 한다 (유저 프로필)문제집/스터디 페이지에서 유저 정보를 가져와서 생성한 사람과 비교해야 한다. 이런 문제점이 생기는데 콘솔에 찍어보면 쿠키를 통해 가져올 수 있는 정보는 id밖에 없기 때문에백엔드 response, request를 아예 갈아엎어야 하던지 아니면 쿠키에 username을 받아와야 했다.그런데 쿠키에 username을 받아오지 않고 id로만 받아와야만 했기 때문에 (username이 unique key가 아님)그냥 프론트쪽에서 전역적으로 유저 정보를 받아와서 사용할 수 있도록 했다. useContext?react..
공식 문서https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-windows/ Install Redis on WindowsUse Redis on Windows for developmentredis.io 내 노트북은 window라 window에서 설치하기 부분을 찾아봤는데, window에서는 공식적으로 지원되지 않는다.Windows에 Redis를 설치하려면 가이드에 나온 것 처럼 WSL2 (Linux용 Windows 하위 시스템) 를 설치해야 한다. 설치하기1. wsl 설치wsl --install cmd(명령 프롬포트)에서 위의 명령어를 입력해서 wsl을 설치한다.설치 후 다시 노트북을..
프로젝트를 진행하는데,특정 엔티티를 삭제할 때 연관된 엔티티를 전부 삭제하도록 해야 하는데 제대로 되지 않았다. 이 부분을 팀원분이 해결해주셨고, 나는 그걸 참고해서 내가 맡은 문제집 쪽 삭제 로직을 수정하였다. https://daydream-sy.tistory.com/358 JPA Cascade 알아보기Cascade란? 부모 엔티티가 영속화될 때 자식 엔티티도 같이 영속화되고, 부모 엔티티가 삭제될 때 자식 엔티티도 삭제되는 등 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태daydream-sy.tistory.com 여기서 정리했던 CascadeType.ALL과 orphanRemoval=true 옵션을 사용했고다른 로직도 일부 수정하면서 테스트 해본 결과 한번에 삭제되는 걸 알 수 ..
Cascade란? 부모 엔티티가 영속화될 때 자식 엔티티도 같이 영속화되고, 부모 엔티티가 삭제될 때 자식 엔티티도 삭제되는 등 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 전이되는 것을 의미한다. JPA에서는 영속성 전이를 Cascade 옵션을 통해 설정하고 관리할 수 있다.JPA Cascade를 활용하면 ‘어떤 엔티티와 다른 엔티티가 밀접한 연관성이 있을 때’에 대한 관리가 매우 수월해진다. 예를 들어,문제와 문제에 대한 댓글이 있다고 가정해보자.문제와 댓글은 연관 관계에 있는 것이다. 이 두 연관 관계의 관리를 하는 데 cascade가 유용하게 사용된다. Cascade 옵션ALLPERSISTMERGEREMOVEREFRESHDETACHcascade는 여섯 가지 옵션..
벌써 4주차라니 믿기지 않는다...이번주는 백엔드 기능 구현으로 바쁜 주간이었다. 1. 소셜 로그인 연동 완료프론트엔드에서 오류가 났던 소셜 로그인 연동을 끝냈다.사실 저번주 주말에 모각코하면서 다 끝내려고 했는데 백엔드 로직을 수정해야 한다고 해서 잠시 멈추었다가 진행했다.일반 로그인을 안해서 다행이라는 생각을 했다...ㅋㅋ소셜 로그인 연동하는 것도 이렇게 오래 걸렸는데..확실히 로그인은 어렵다. 2. 전역 예외 처리지난 주에 어떤 다른 프로젝트의 깃허브를 구경하다가 전역적으로 예외 처리한 걸 발견했다.enum type으로 직접 하나하나 예외를 작성해주고 status까지 지정해놓은 걸 보니 복잡해보이지만 우리 프로젝트에도 적용해볼 수 있겠다는 생각이 들어 이번주에 완료했다. http..
PageModule$WarningLoggingModifier : Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure! For a stable JSON structure, please use Spring Data's PagedModel (globally via @EnableSpringDataWebSupport(pageSerializationMode = VIA_DTO)) or Spring HATEOAS and Spring Data's PagedResourcesAssembler as documented in h..
문제집 댓글 조회 기능을 구현하던 중 이렇게 긴 오류가 나왔다.잘려서 잘 안보이지만 메모장으로 옮겨두고 분석해보니 엄청나게 길었다. 그 중 오류를 구글에 검색해봤는데 Unsatisfied dependency expressed through constructor parameter 0 이런 오류가 발생했던 것이었다.빈 생성시 필요한 것이 빠졌거니 잘못 생성했으니 고치라는 의미였다. 나는 controller, service, repository 다 들어가봤는데 도무지 나오지 않았는데 시간이 좀 지난 다음에야 찾을 수 있었다.BookCommentLikeRepository에서 countByBookCommentId 메서드를 정의할 때, BookCommentLike 엔티티에 bookCommentId라는 속성이 없어서..
프로젝트에 북마크 기능이 있는데, boolean을 이용해서 삭제 여부를 update하는 soft delete를 구현하기로 했다.북마크 db가 따로 있고 로그인한 사용자가 특정 문제집을 북마크하는 것이다. 처음 북마크를 한다면 db에 새로운 북마크가 생성되고,북마크를 취소하는 경우 is_deleted가 true로 업데이트 되는 형식이다. 기능 구현 전에 api 명세서를 작성할 때는POST /api/books/{id}/bookmarkUPDATE /api/books/{id}/bookmark이렇게 두 가지를 따로 작성했었는데 토글 방식으로 구현할 수 있지 않을까 하다가 참고할만한 글을 발견해서적용해보았고 포스트맨으로 테스트까지 마쳤다. BookmarkResponse 생성@Getter@Builder@..
문제집 삭제 기능을 포스트맨으로 테스트 해보려고 하는데 2024-10-22T10:38:04.046+09:00 ERROR 9084 --- [test-dodream-backend] [nio-8080-exec-5] c.d.t.common.exception.ErrorController : Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 2024-10-22T10:38:04.086+09:00 WARN 9084 --- [test-dodream-backend] ..