Spring

검증2 - Validation : Form 전송 객체 분리

sami355 2022. 9. 1. 19:01

인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다.

무엇을 배웠나요?

  • BeanValidation의 기능인 groups를 실무에서는 잘 사용하지 않는다.
  • 폼에서 전달하는 데이터와 도메인 객체와 딱 맞는 상황이 적기 떄문.
  • 전체적인 흐름
    • 폼 데이터 전달에 도메인 객체 사용
      • HTML Form → 도메인 객체 → 컨트롤러 → 도메인객체 → Repository
      • 장점 : 중간에 Item을 만드는 과정이 없어서 간단하다
      • 단점 : 간단한 경우에만 적용할 수 있고 수정시 검증이 중복될 수 있고, groups를 사용해 복잡도가 올라간다.
    • 폼 데이터 전달을 위한 별도의 객체 사용
      • HTML Form -> 등록용 폼 객체-> Controller -> 도메인 객체생성 -> Repository
      • 장점 : 전송하는 폼의 데이터가 복잡해도 별도의 폼 객체를 사용하기 떄문에 검증이 중복 되지 않는다.
      • 단점 : 폼 데이터를 기반으로 컨트롤러에서 Item 객체를 생성하는 변환 과정이 추가된다.
  • 💡 등록, 수정용 뷰 템플릿이 비슷하서 합칠때 생기는 문제점
  • 유지 보수에서 힘들어진다. 어설픈 분기분들이(등록 혹은 수정 etc)보이면 분리해야 할 신호이다.
  • 맵핑으로 들어올때 @ModelAttribute로 등록 혹은 수정용 Form 객체를 받고 해당 객체를 도메인 객체로 적절히 변화하여 Repository에 넣는다.