TIL230103

5w31892p·2023년 1월 4일
0

Dev.TIL

목록 보기
47/66

🙊 Today I Learned

  1. 팀 프로젝트 - 개인 프로젝트에 적용 중

:: 문시해알

문제점

  1. 정규식표현으로 걸어둔 username과 password 구성에 맞지 않으면 에러메시지와 statusCode 400 반환하는 것, 정규식표현을 dto에 걸어두어서 어떻게해야하나 고민이였다.

  2. 게시글, 댓글 삭제시 연관 데이터 모두 삭제 될 수 있도록 구현하기

시도한 것

  1. dto에서 안되면 바로 에러메시지와 상태코드 반환하도록 하려고 해보았으나 정규식 표현을 어노테이션에 달아놓은 것이라 아직 내가 아는 선에서는 불가능해보였다.
    그래서 sevice단에서 해결할까 controller단에서 해결할까 고민하다 controller단으로 옮겼다.

  2. 관련 연관 데이터 다 삭제하는 것을 구글링도 해보다가 점프 투 스프링부트에서 어노테이션 속성으로 해결 가능했던 부분이 생각나서 적용했다

해결

  1. controller signup에서 .matches를 통해 정규식을 달아주고, if를 통해 맞다면 회원가입 완료, 아니라면 타입에 맞게 적으라는 상태코드가 뜨게 했다.

  2. 각 entity에 @OneToMany 속성인 cascade = CascadeType.REMOVE 을 적용했다.
    이 속성은 예를 들자면 질문 하나에 댓글이 여러개 달리는데 그 질문을 삭제하면 그에 달린 댓글들도 모두 삭제하는 속성이다.

알게 된 것

어노테이션, 그 안에 속성들도 참 중요하다.
저 단 몇글자로도 부모에 달린 자식들까지 삭제가 가능하다.
그리고 .matches같은 경우는 우선 controller에서 해야겠다 생각한 후 dto의 이름을 불러온 후 . 누르고 뭐가 있는지 하나하나 찾아본 결과 알아냈다.
눈알이 빠질 것 같았지만 해결했다.
여기서 알게 된 것은 한번 써먹은거는 잊지말고 기억하자이다.
기억을 해야 이번같이 눈알 아프게 들여다보지 않아도 되고, 아 이런게 있었지 하고 바로 쓸 수 있기 때문이다.


대댓글 기능도 추가했는데,
이것은 comment 쪽을 거의 이름만 바꿔서 붙혀넣은것이라 거저먹었다
개꿀띠


📜 cascade 추가

📜회원가입 타입 exception 적용

0개의 댓글