최근 한 회사에서의 면접 탈락 후, 피드백을 요청 드렸는데 감사하게도 면접에 참여하신 세 분 모두 장문의 피드백을 주셨다.
기술적인 부분 뿐만 아니라 앞으로의 방향성에 있어서도 좋은 얘기를 해주셔서 진짜 감동..ㅠㅠ
그래서 이제 피드백 주신 부분들에 대해서 공부를 해보려고 하는데
그 첫번째가 도메인 클래스와 도메인 모델에 대한 내용이다.
피드백 받은 이후에 계~속 도메인에 대한 개념과 도메인 클래스랑 도메인 모델에 대해서 찾아보고 있긴 한데 이해가 갈듯 말듯..
도메인 용어부터 시작해서 도메인 레이어, 도메인 모델, 도메인 클래스랑 엔티티, Model파일, 레포지토리 이런 것도 해서 전부 다 뒤섞여서 왕 헷갈림 ㅠㅠ
일단 "도메인" 이라는 용어는 프로그래밍으로 해결하고자 하는 주제에 대한 영역과 핵심 비즈니스 요구사항을 의미하는 단어라고 해서, 쉽게 지금 개발하고 있는 플랫폼에서 생각해보면 주문, 위젯, 상품 등을 나타내는 용어라고 생각하면 될 것 같다.
"도메인 레이어"는 레이어드 아키텍처에서 크게 presentation, domain, data access 레이어로 나누고 domain 레이어는 그 중에 하나의 레이어로서 서비스의 비즈니스 로직이 들어가는 레이어라는 것도 이해 ok.
피드백에서 말한 도메인 클래스는 진짜 class를 말한거겠지..?
과제에서 작성한 코드에서 entity는 데이터베이스 스키마 정의하는 부분으로 사용했고
repository는 레포지토리 패턴을 위해 만든 클래스로 service 클래스에서 데이터베이스 엔티디를 직접 주입받는게 아니라 repository를 주입해서 접근하는 방식으로 생각해서 작성을 했다.
그래서 repository에서 CRUD를 전부 하고 service 클래스에서는 유효성 검사 같은 비즈니스 로직을 실행했는데
강의 생성, 프로퍼티 수정(강의 상태 변경)과 같은 역할은 오로지 해당 도메인 클래스가 가져가고 해당 인스턴스를 데이터베이스에 저장하는 역할을 레포지토리가 담당
이런 피드백을 받아서 사실 "어떻게 해야하는거지?" 싶었다..😢
내가 뭘 모르겠고 헷갈려하는지 정의하는게 좀 어렵긴 한데.. 음..
1. service 클래스와 domain 클래스의 구분
2. 레포지토리 역할의 범위
3. entity? model? 클래스에서 가지고 있어야 하는 역할?
이렇게 3가지가 같이 헷갈리는 것 같다..!
이거.. 잘 찾아볼 수 있는건가? 일단 "찾아"볼 수 있는 내용인건가..?
책을 읽어야하나 뭘 해야하나 어떻게 해야할지 감이 안잡혀요ㅠㅠㅠㅠㅠ