[Spring 입문] 3. 회원 관리 예제 - 백엔드 개발

Nakyeong Lee·2024년 10월 6일
0
post-thumbnail

비즈니스 요구사항 정리

일반적인 웹 애플리케이션 계층 구조

  • Controller: 웹 MVC의 컨트롤러 역할
  • Service: 핵심 비즈니스 로직 구현
  • Repository: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리
  • Domain: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨

회원 도메인과 레포지토리 만들기

아직 데이터 저장소가 선정되지 않은 경우, 인터페이스 및 구현 클래스를 만들어 추후 구현 클래스를 변경할 수 있도록 설계한다.

public interface MemberRepository {

	Member save(Member member);
	Optional<Member> findById(Long id);
	Optional<Member> findByName(String name);
	List<Member> findAll();
}
public class MemoryMemberRepository implements MemberRepository {

	private static Map<Long, Member> store = new HashMap<>();
	private static long sequence = 0L;
    
	@Override
	public Member save(Member member) {
		member.setId(++sequence);
		store.put(member.getId(), member);
		return member;
	}
    
	@Override
	public Optional<Member> findById(Long id) {
		return Optional.ofNullable(store.get(id));
	}
    
    ...
}

*다만 HashMap은 동시성 문제가 고려되어 있지 않아, 실무에서는 ConcurrentHashMap, AtomicLong 사용을 고려한다.

*Optional

회원 리포지토리 테스트 케이스 작성

자바는 JUnit이라는 프레임워크로 테스트를 실행한다.
테스트는 각각 독립적으로 실행되어야 한다. 테스트 순서에 의존관계가 있는 것은 좋은 테스트가 아니다.

profile
Web Backend Developer

0개의 댓글