회원가입시 Member Entity가 아닌 MemberForm DTO를 활용하는 이유
Member 엔티티가 존재하니 회원가입시 가입 정보를 전달 할 때 Member Entity를 그대로 활용해 넘기는 것은 좋은 습관이 아니다.
그 이유는 주로 보안을 위한 것이며 데이터 베이스 계층에서 API 또는 웹 계층을 분리하기 위해서다
Member 클래스
MemberFormDto
엔티티를 DTO로 변환해서 전달하는 이유를 정리해보면
1.보안
데이터 베이스 엔티티를 보기 또는 컨트롤러 계층에 직접 노출하는 것은 보안 위험이 될 수 있다. 예를 들어 엔티티에 고객에게 노출되어서는 안 될 중요한 정보가 담겨있을 수 있다.
2. 데이터 무결성
데이터가 엔티티에 도달하기 전에 데이터의 유효성을 검사할 수 있다. DTO를 활용하면
이와 같이 DTO의 필드에 조건을 걸 수 있기에 DTO의 데이터를 엔티티로 변환하기 전에 유효성을 검사할 수 있다.
3.추상화
별도의 DTO를 사용하여 컨트롤러와 뷰 계층을 데이터베이스 계층에서 분리된 상태로 유지할 수 있다.
4.유연성
데이터베이스 테이블(및 엔터티)의 형태는 종종 컨트롤러 또는 뷰에서 작업할 때 필요한 데이터 형태와 완벽하게 일치하지는 않습니다. 예시로 Member Entity에는 멤버와 관련 된 모든 필드가 존재하지만 회원가입시에 모든 필드를 기입하지는 않습니다. 그렇기에 따로 MemberFormDto를 구현하여 회원가입이 최적화된 뷰를 보조한다.
즉 DTO를 사용하여 애플리케이션의 다른 계층을 분리된 상태로 유지하고 보안을 강화하며
데이터 무결성을 유지하고 유연성을 높이기 위해 Member Entity가 아닌 MemberFormDTO를 별도로 구현하는 것이다.
그 이유는 주로 보안을 위한 것이며 데이터 베이스 계층에서 API 또는 웹 계층을 분리하기 위해서다