20240328 (목) 최종 프로젝트 티켓레이더 5주차 - 마무리주차

2024. 3. 28. 21:15TIL

1. 마이페이지(유저정보 수정)내용추가 및 보안 강화

마이페이지에서 유저정보를 변경하는 부분이 있다.

이 부분에서 현재 닉네임과 현재 이메일을 표시해줘서 좀더 유저관점에서 편리함을 제공했다.

또 여기에 접근하기 전에 

이런식으로 비밀번호를 한번 받아서 보안을 좀더 강화했다.

 

2. 좋아요 기능 추가

좋아요 버튼 1개로 추가/삭제가 이루어진다.

우린 좋아요정보를 저장하는 테이블이 따로 존재하고

거기에 이벤트ID, 멤버ID 를 같이받아서 저장된다.

기본적으로 좋아요 갯수는 좋아요가 추가되면 이벤트에 있는 라이크카운트가 ++ 되거나 삭제되면 --되는 형식이지만

오차가 생길수있으니 스케줄링으로 갯수를 정확하게 세서 라이크카운트에 넣는 작업이 이루어지게 할 예정..

 

3. 리뷰 평점 반올림기능

 

리뷰 평점은 생각보다 쉬웠다.

현재 평점은 Float 형태로 소수점아래까지 쭈우욱 늘어졌지만

Round(숫자) 형식으로 간단하게  구현했다.

Round를 적용한다면 이렇게 된다.

 

454.12234 >> 454.0

 

근데 필요에 따라 소수점 1자리까지는 살릴 경우도 생각하고있다.

추가로 설명하자면 소숫점을 원하는 자리까지 나타내는 함수

String.format("%.1f", 숫자).toFloat() //1f 에서 1은 소숫점자리

 

4. 티켓 삭제 오류

 

티켓 삭제도중 문제가 발생했다.

 

delete 쿼리를 날리도록 코드를 짜도 맨 마지막에 delete를 날리지 않던 것!!!

 

나로서는 이해가 잘 안가고 이유도 잘 모르겠어서 팀원들과 얘기를 나누며 내 코드와 다른점을 확인해보았다.

그러다 발견한것이

이부분...

바로 orphanRemoval 이 없었던것.. (지금은 이유를 알았기에 의도적으로 주석처리해놨다)

 

왜 이런현상이 일어났는지는 튜터님께서 말해주시길 POJO(Plain Old Java Object) 와 연관이 있다고 하셨는데..

따로 POJO를 검색해봐도 무슨 연관이였는지는 잘 나타나있지 않았고 다른 문제하고도 복합적으로 이루어진것 같은데
나의 지극히 주관적인 생각으로는

orphanRemoval이 없고 cascade 타입만 있는 상태에서 "Ticket"을 삭제했을시 그의 주인인 "Member"와의 관계를 JPA쪽이든 코틀린이든(코드는 정상적으로 실행되었고 쿼리가 안날라간걸 봐서는 JPA쪽인것 같다.) 누가 부모이고 누가 자식인지 모른 상태에서 데이터 보호를 위해 딜리트를 중단시켰을것으로 예상하고있다.