본문으로 바로가기

[Spring boot] 스프링 - 회원 가입, 회원 조회

category Java/Spring 2022. 1. 5. 12:28
반응형

 

 

 

간단한 회원관리 예제를 구현하고자 한다.

순서는 아래를 참조하면 된다.

 

 


● 회원관리 예제 - 백엔드 개발

 

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

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

   3. 회원 서비스 개발

   4. 회원 서비스 테스트

 


 

 

 

웹 개발을 할 때 작성순서, 클래스 간에 연관성도 중요하다.

 

 

 

일반적인 웹 애플리케이션의 구조는 아래와 같다.

 

 

 

 

 

● 일반적인 웹 애플리케이션의 구조

 

 - 컨트롤러: 웹 MVC의 컨트롤러 역할

 - 서비스: 핵심 비즈니스 로직 구현

 - 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리

 - 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨

 

 

 

 

 

 

 

위의 구조에 따라 회원가입과 회원 조회를 위한 클래스들을 작성해보자.

 

 

 

 


 

 

● 회원 도메인 작성  

 

 

 

 

 

 

Member.java

package hello.hellospring.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

public class Member {

   
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

 

 

 

 

 

 

 

 

● 회원 리포지터리(Repository)작성  

 

 

 

 ○ 인터페이스 먼저 구현

 

 

 

 

MemberRepository.java (인터페이스)

package hello.hellospring.repository;

import hello.hellospring.domain.Member;

import java.util.List;
import java.util.Optional;

public interface MemberRepository {
    Member save(Member member);				// 회원 저장(등록)
    Optional<Member> findById(Long id);			// 회원 검색(아이디로)
    Optional<Member> findByName(String name);		// 회원 검색(이름으로)
    List<Member> findAll();				// 전체 회원 검색
}

 

 

 

 

○ Repository 구현체

 

 

 

 

MemoryMemberRepository.java

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import org.springframework.stereotype.Repository;

import java.util.*;


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));
    }

    @Override
    public Optional<Member> findByName(String name) {
        return store.values().stream()
                .filter(member -> member.getName().equals(name))
                .findAny();
    }

    @Override
    public List<Member> findAll() {
        return new ArrayList<>(store.values());
    }

    public void clearStore() {
        store.clear();
    }
}

 

 

 

 

 


 

 

 

간단한 회원가입, 회원조회를 구현했다.

 

 

 

실제로 잘 동작하는지는

 

다음 포스팅에서 다룰 '테스트 케이스 작성'을 통해 테스트를 해보자.

https://healthdevelop.tistory.com/entry/spring13

 

[Spring boot] 스프링(Spring) 테스트 케이스 작성(회원 가입, 회원 조회

개발한 기능을 실행해서 테스트할 때 자바의 main 메서드를 통해서 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, (

healthdevelop.tistory.com

 

반응형