개발자 공부 - 인프런 온라인 강의/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[섹션 3. 회원 관리 예제 - 백엔드 개발] 비즈니스 요구사항 정리 & 회원 도메인과 리포지토리 만들기 / 인프런 김영한 스프링 입문

easpop 2023. 1. 27. 09:00
728x90
반응형

이번 강의에서는 예제 첫번째 시간으로 진행되었다~~

먼저 비즈니스 요구 사항을 정리하고,

회원 도메인과 회원 도메인 객체를 저장하고 불러올 수 있는 리포지토리(Repository) 객체 만들기,

정상 작동 테스트를 위한 회원 리포지토리 테스트 케이스 작성,

회원 서비스 개발, 회원 서비스 테스트 순서로 진행!

테스트는 junit으로 진행할 예정!ㅋㅋㅋ

출처 : https://velog.io/@witwint/spring-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EA%B3%84%EC%B8%B5%EA%B5%AC%EC%A1%B0

예제에 들어가기 앞서 어떤 조건이 가상의 상황으로 주어졌는데, 아직 어떤 db로 진행할 지 안정해진 가상의 시나리오가 주어졌다.

 

위의 사진은 웹 애플리케이션 계층 구조를 나타내는 사진!

컨트롤러는 웹 브라우저의 요청을 받는 가장 최전선~~

서비스는 비즈니스의 핵심 로직이 들어가 있는 계층임.

예를 들면, 회원 중복 가입 안됨. 이런 것들이 서비스 계층에 들어가 있다.

서비스는 또한 도메인을 활용해서 핵심 비즈니스 로직을 동작하도록 구현한 계층이다.

 

리포지토리 - 쉽게 말해 저장소 역할을 하는 계층

도메인 - 회원, 주문, 쿠폰 등 과 같이 주로 db에 저장하고 관리되는 비즈니스 도메인 객체.

 

리포지토리 클래스를 생성할 때, 상황이 db가 선정 안된 상황이기 때문에,

우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계.

반응형

도메인의 member 클래스에 대한 설명~~

id - 고객이 정하는 아이디가 아닌 데이터를 구분하기 위해서 시스템이 저장하는 id를 말함

예를 들면, 데이터 구분을 위해서 0,1,2.. 이런식으로 시퀀스를 부여해서 구분할수도 있음~~!

name은 말 그대로 이름 저장을 위한 인스턴스~~!

 

회원 객체를 저장하는 저장소인 리포지토리 패키지를 생성

인텔리제이를 쓰기 시작한지 얼마되지 않아서 이런게 헷갈릴때가 있다;;

implement를 하면 저렇게 메소드를 override(재정의) 할 수 있다!

 

save 메소드를 위해 구현 시작!

11번째 라인에서 시퀀스는 0, 1, 2.. 이런식으로 값을 늘려가면서 키 값을 생성해주는 메소드.

 

save 메소드는 아이디를 세팅을 하고 

store.put 메소드를 통해 member의 id와 member 객체를 map에 저장해준다.

 

findById에서 return값을 설명하자면, get id를 했을 때 null일 가능성이 있기 때문에,

Optional.ofNullable로 감싸면 null이여도 반환이 가능!

 

findByName에서는 람다식을 사용하였다.

코딩 알고리즘에서 효율성 테스트를 했을 때, 람다식이 눈으로 보기에는 짧아서 빠를것 같이 보였지만,

실제로는 처리속도가 엄청 느려서 효율성이 낮은것으로 알고 있다.

 

findAll 메소드에서는 리턴값이 ArrayList로 저장된 value들, 즉 member들이 리턴됨~~!

 

구현을 다 마치고 정상 작동하는지 확인을 위해 테스트 케이스는 다음 강의에 이어서 작성~~

 

728x90
반응형