아이디와 패스워드 유효성 검사를 하기 위해 Dto에 @Size 옵션을 추가해주었고, Controller에서는 @Valid를 붙여 조건을 검증하도록 했습니다. 패턴에 대해서는 Service에서 작성하고, 일치 여부를 확인해 메시지를 return해주었습니다.
Valid와 서비스단을 모두 사용해보고 싶어서 이렇게 작성했는데, 실제로는 어떤 방식으로 구현하는 것이 더 효과적인지 궁금합니다.
\
[lv3]
27fa58f
수정/삭제 기능에서 작성자인데 작성자가 아니라고 나오는 경우가 있었습니다.
제가 생각한 로직은 아래와 같았습니다.
\
게시글 DB 존재 여부 확인 -> 관리자 여부 확인 -> 관리자면 바로 수정/삭제, 아니면 작성자 여부 확인 -> 맞으면 수정/삭제
\
관리자인지 먼저 확인하고 게시글이 존재하는 지 확인하고, 작성자인지 확인하는 순서로 변경해보았더니 잘 동작하는 것을 확인했습니다.
기존 로직대로 실행하면 왜 안 되는지 궁금합니다..
일단 학습의 측면에서는 유효성 검사를 다양하게 해보시면 좋을 것 같구요. 어노테이션을 사용하는 방법 외에도 자바의 Pattern 클래스를 이용할 수도 있을 것 같아요.
유효성 검사를 어디서 구현할 지는 프로젝트에 따라서 효율적이라고 생각하는 방식으로 구현하시면 됩니다! 유효성 검사는 여러 엔티티에 필요할 수 있으므로 유지보수 측면에서 본다면 일괄적인 방법으로 적용을 하는게 좋을 것 같아요. 팀원 중 누가 어떤 로직의 유효성 검사를 수정하여도 쉽게 어디에 구현되어 있는지 알 수 있게요.
커밋 기준으로 변경 전 코드에서 username을 비교하실 때 ==비교를 사용하셨는데, username은 String이기 때문에 값을 비교하려고 하신거라면 equals를 사용하셔야 할 것 같아요.
게시글의 작성자를 확인하기 위해 username을 사용하셨는데, username이 unique하다고 하더라도 변경될 여지가 있기 때문에 pk를 사용하셔야 해요. userId으로 비교하시거나 Post와 User가 연관관계가 맺어져 있다면 user를 사용하는걸 권장드립니다!
[lv2]
\ [lv3]
27fa58f