🙊 Today I Learned
- 팀 프로젝트 - 개인 프로젝트에 적용 중
정규식표현으로 걸어둔 username과 password 구성에 맞지 않으면 에러메시지와 statusCode 400 반환하는 것, 정규식표현을 dto에 걸어두어서 어떻게해야하나 고민이였다.
게시글, 댓글 삭제시 연관 데이터 모두 삭제 될 수 있도록 구현하기
dto에서 안되면 바로 에러메시지와 상태코드 반환하도록 하려고 해보았으나 정규식 표현을 어노테이션에 달아놓은 것이라 아직 내가 아는 선에서는 불가능해보였다.
그래서 sevice단에서 해결할까 controller단에서 해결할까 고민하다 controller단으로 옮겼다.
관련 연관 데이터 다 삭제하는 것을 구글링도 해보다가 점프 투 스프링부트
에서 어노테이션 속성으로 해결 가능했던 부분이 생각나서 적용했다
controller signup에서 .matches
를 통해 정규식을 달아주고, if를 통해 맞다면 회원가입 완료, 아니라면 타입에 맞게 적으라는 상태코드가 뜨게 했다.
각 entity에 @OneToMany
속성인 cascade = CascadeType.REMOVE
을 적용했다.
이 속성은 예를 들자면 질문 하나에 댓글이 여러개 달리는데 그 질문을 삭제하면 그에 달린 댓글들도 모두 삭제하는 속성이다.
어노테이션, 그 안에 속성들도 참 중요하다.
저 단 몇글자로도 부모에 달린 자식들까지 삭제가 가능하다.
그리고 .matches같은 경우는 우선 controller에서 해야겠다 생각한 후 dto의 이름을 불러온 후 . 누르고 뭐가 있는지 하나하나 찾아본 결과 알아냈다.
눈알이 빠질 것 같았지만 해결했다.
여기서 알게 된 것은 한번 써먹은거는 잊지말고 기억하자이다.
기억을 해야 이번같이 눈알 아프게 들여다보지 않아도 되고, 아 이런게 있었지 하고 바로 쓸 수 있기 때문이다.
대댓글 기능도 추가했는데,
이것은 comment 쪽을 거의 이름만 바꿔서 붙혀넣은것이라 거저먹었다
개꿀띠