인프런 커뮤니티 질문&답변

양치잘하기님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

로그인 기능

LoginForm클래스가 web영역인 이유가 궁금합니다.

해결된 질문

작성

·

196

0

멤버 클래스, 멤버 리포지토리 클래스와 비교하였을 때 멤버 클래스는 도메인 영역에 존재하고 멤버 리포지토리에 의해서 멤버 클래스의 객체가 만들어지는것 같은데

로그인기능에서 로그인폼 클래스가 멤버 클래스와 같은 기능인것 같은데 서로 다른 영역에 존재하고 로그인 사용자가 생성될려면 로그인서비스의 loginService.login()기능이 호출되어서 로그인 객체가 생성이 되는것을 알겠는데 멤버클래스와 다르게 web영역에 존재하는 이유가 궁금합니다.

답변 2

1

안녕하세요. 양치잘하기님, 공식 서포터즈 OMG입니다.

(멤버) 도메인은 웹에 의존하지 않아야 합니다.

반면, 로그인을 웹 화면에서 시도하여 서버에게 로그인 사용자 정보를 전달하기 때문에

로그인 폼은 웹 화면에서의 로그인 처리에 대한 데이터 정보를 담고 있어 웹 계층에 위치한 것입니다.

추가로 ai인턴 답변도 참고해주세요 😀

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

양치잘하기님의 질문에 대해 정확한 답변을 드리기 위해 고민하였습니다. “LoginForm클래스가 web 영역에 존재하는 이유”와 관련하여, 이는 LoginForm 클래스의 역할과 사용 범위에 기인합니다.

LoginForm 클래스는 웹 계층에서 사용자의 입력을 받아오는 폼 데이터를 매핑하기 위한 DTO(Data Transfer Object) 역할을 합니다. 즉, 사용자가 웹 페이지에서 로그인 정보(예: 사용자 이름, 비밀번호 등)를 입력할 때, 이 정보를 컨트롤러로 전달하기 위해 사용되는 객체입니다. 이런 이유로 LoginForm은 웹 계층에 속합니다.

반면에, 멤버 클래스(Memeber)는 도메인 모델로서 애플리케이션의 핵심 비즈니스 로직을 구현하는데 사용됩니다. 멤버 리포지토리(MemberRepository)는 이 도메인 객체에 대한 데이터 접근 계층의 역할을 하며, 데이터베이스와 같은 영속성 관리를 담당합니다.

LoginForm이 도메인 영역이 아니라 웹 계층에 속하는 주된 이유는, 이 객체가 사용자의 입력 값을 컨트롤러에서 처리하기 위한 목적으로만 사용되기 때문입니다. 도메인 모델이나 리포지토리와는 다르게, 이 DTO는 데이터의 임시 보관과 전달에 초점을 두고 설계되었습니다.

아래 링크에서 비슷한 주제에 대한 기존 답변을 찾을 수 있습니다:

이 링크에서는 웹 폴더에 있는 LoginForm 객체가 도메인 객체가 아닌 웹 계층에서만 사용하는 객체로서 기능하게 됨을 설명해 줍니다. LoginForm은 특정 컨트롤러에서 사용자의 입력을 바인딩하고, 그 데이터를 서비스 계층으로 전달하는 역할을 합니다. 이는 애플리케이션의 계층 분리 원칙에 따라 설계된 것으로 구조적인 명확성을 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.