반응형
간단한 회원관리 예제를 구현하고자 한다.
순서는 아래를 참조하면 된다.
● 회원관리 예제 - 백엔드 개발
웹 개발을 할 때 작성순서, 클래스 간에 연관성도 중요하다.
일반적인 웹 애플리케이션의 구조는 아래와 같다.
● 일반적인 웹 애플리케이션의 구조
- 컨트롤러: 웹 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
반응형
'Java > Spring' 카테고리의 다른 글
[Spring boot] 스프링 회원 서비스 - 중복 회원 검사 | 전체 회원 조회 | 회원 조회 (0) | 2022.01.05 |
---|---|
[Spring boot] 스프링(Spring) 테스트 케이스 작성(회원 가입, 회원 조회 (0) | 2022.01.05 |
[Spring boot] 스프링 웹 개발 기초 - API (0) | 2022.01.04 |
[Spring boot] 스프링 웹 개발 기초 - MVC와 템플릿 엔진 (0) | 2022.01.04 |
[Spring boot] 스프링 웹 개발 기초 - 정적 컨텐츠(html) (0) | 2022.01.04 |