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

[BUG] 좋아요 반 정규화로 인한 템플릿 좋아요 시 해당 템플릿의 ModifiedAt 변경 문제 #925

Open
kyum-q opened this issue Nov 18, 2024 · 1 comment
Assignees
Labels
BE 백엔드 bug 개발자가 의도하지 않은 상황

Comments

@kyum-q
Copy link
Contributor

kyum-q commented Nov 18, 2024

🐞 어떤 상황에서 발생한 버그인가요?

좋아요 반 정규화로 템플릿 테이블에 좋아요한 개수를 저장하기 시작했다.
이를 통해 해당 템플릿 좋아요 시 템플릿이 업데이트 되어 ModifiedAt 시간이 변경된다.

현재 서비스 정책 상 최근 수정 순으로 데이터를 정렬하여 이에 좋아요한 템플릿이 맨 위로 올라가게 된다.

🎁 예상 결과

좋아요 시 템플릿의 ModifiedAt 변경되지 않는다.

⏳ 예상 소요 시간 (예상 해결 날짜)

이슈를 완료하기까지 예상되는 소요 시간을 시간 or 일 단위로 작성해주세요.

2일 0시간 소요 (11/19 00:00)

🔍 참고할만한 자료(선택)

@kyum-q kyum-q added bug 개발자가 의도하지 않은 상황 BE 백엔드 labels Nov 18, 2024
@kyum-q kyum-q added this to the 7차 스프린트 💭 milestone Nov 18, 2024
@kyum-q kyum-q self-assigned this Nov 18, 2024
@kyum-q
Copy link
Contributor Author

kyum-q commented Nov 18, 2024

방법 1 : @PreUpdate 이용

엔티티 데이터 업데이트 전에 호출되는 @PreUpdate를 이용하는 것

데이터가 업데이트 됬는지 확인한 후 업데이트 됬을 경우 modified를 변경 아닐 경우 변경하지 않는다.
즉, 업데이트 되면 값을 비교하여 특정 필드가 수정될 때에만 date를 갱신할 수 있다.

방법 2 : JPQL로 Query 작성 혹은 QueryDSL 사용

데이터를 QuertDSL이나 JPQL로 업데이트 코드를 작성.
즉 도메인을 변경하지 않고, 레포지토리 사용으로 데이터를 업데이트 한다.


결정

두 가지 방법 중에 고민해보니 2번째 방법은 서비스 단에서 변경이 있을 경우 도메인에서 데이터를 변경하지 않고 레포지토리로 데이터를 바로 변경하는 방법이라 기존에 데이터의 변화를 도메인이 담당하지 않는 다는 점과 테스트 시 데이터베이스 연결이 필요하다는 점에서 좋은 선택이 아니라고 생각했다.

그래서 1번 방법으로 해당 문제를 해결하려고 한다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드 bug 개발자가 의도하지 않은 상황
Projects
Status: Todo
Development

No branches or pull requests

1 participant