본문 바로가기
Learning-log/Spring & JPA

(스프링 핵심 원리 - 기본편) 2-(3) 회원 도메인 설계, (4) 회원 도메인 개발, (5)

by why제곱 2023. 3. 26.

- 회원 도메인 설계

  • 회원 데이터는 자체 DB 구축 또는 외부 시스템과 연동(미확정)

 

  • - 회원 도메인 설계하기
    • 클라이언트
      • 회원 서비스 (역할)
      • 회원가입
      • 회원조회
    •  회원 저장소 (회원 데이터에 접근하는 계층 따로 만들기, 인터페이스, 역할)  
      • 구현 =>
        • 메모리 회원 저장소 : 메모리니까 컴퓨터 껐다 켜면 날아가므로 개발용으로만 사용, 테스트하거나 로컬에서 개발할 때 사용. 이걸로 개발하다가 나중에 데이터베이스나 외부 시스템이 결정되면 그걸로 바꿔 끼울 것!
        • DB 회원 저장소
        • 외부 시스템 연동 회원 저장소

- 회원 클래스 다이어그램(실제 구현레벨로 내려오면!)

 

출처 : 인프런 - 김영한 강의(스프링 핵심원리 기본편)

- 회원 객체 다이어그램(객체가 실제로 참조하는 주소)

  • 클라이언트 -> 회원서비스Impl -> 메모리 회원 저장소

 

** 윈도우 환경에서 IntelliJ 단축키 찾는 방법

[File] - [Settings] - [Keymap] 에서 원하는 기능 검색 => 단축키 확인 가능 !

 

- 회원 테스트

위와 같이 매번 main 메서드를 이용해서 (순수 자바코드로 ,,! ) 테스트를 하는 건 한계가 있다. 따라서 junit이라는 테스트 프레임을 사용해서 아래와 같이 테스트를 할 수 있다.

 

- 회원 도메인 설계의 문제점 !!

  • 이 코드의 설계상 문제점은 뭘까? 
  • 다른 저장소로 변경할 때 OCP원칙을 잘 준수할까?
  • DIP를 잘 지키고 있는가?
  • 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제가 있다.
    • 실제 할당하는 부분이 구현체를 의존함. MemberServiceImpl이 추상화에도, 구체화에도 의존을 함. 추후 변경이 생기면 문제가 됨.