반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
07-04 04:13
관리 메뉴

ImJay

[Java Spring] 2-10. 회원 도메인 개발 본문

Java Spring/스프링 핵심 원리 - 기본편

[Java Spring] 2-10. 회원 도메인 개발

ImJay 2023. 2. 20. 19:02
반응형

[Java Spring] 2-10. 회원 도메인 개발


1. java/hello/core 에 member 패키지 생성

 

2. member 패키지에 Grade enum 생성

 

3. 코드 작성

package hello.core.member;

public enum Grade {
    BASIC,
    VIP
}

- 회원 등급은 일반 회원, VIP 회원으로 나뉜다고 조건에서 정했다.

 

4. member 패키지에 Member class 생성

 

 

5. 코드 작성

package hello.core.member;

public class Member {
    private Long id;
    private String name;
    private Grade grade;

    public Member(Long id, String name, Grade grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }

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

    public Grade getGrade() {
        return grade;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}

- 아이디, 이름, 등급을 저장한다.

- 생성자, getter, setter 도 만들어준다. ( 윈도우 단축키 : ALT + INSERT )

 

6. member 패키지에 MemberRepository interface 생성

 

7. 코드 작성

package hello.core.member;

public interface MemberRepository {
    void save(Member member);

    Member findById(Long memberId);
}

- 회원 등록과 조회 기능을 제공한다.

 

8. member 패키지에 MemoryMemberRepository class 생성

 

9. 코드 작성

package hello.core.member;

import java.util.HashMap;
import java.util.Map;

public class MemoryMemberRepository implements MemberRepository{

    private static Map<Long, Member> store = new HashMap<>();

    @Override
    public void save(Member member) {
        store.put(member.getId(), member);
    }

    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }
}

- 메모리에서만 작동 가능 하도록 매우 간단하게 구현된 기능이다.

 

10. member 패키지에 MemberService interface 생성

 

11. 코드 작성

package hello.core.member;

public interface MemberService {
    void join(Member member);

    Member findMember(Long memberId);
}

- 회원 가입과 조회 기능을 제공한다.

 

12. member 패키지에 MemberServiceImpl class 생성

 

13. 코드 작성

package hello.core.member;

public class MemberServiceImpl implements MemberService{

    private final MemberRepository memberRepository = new MemoryMemberRepository();

    @Override
    public void join(Member member) {
        memberRepository.save(member);
    }

    @Override
    public Member findMember(Long memberId) {
        return memberRepository.findById(memberId);
    }
}

- 다형성을 활용하여 MemoryMemberRepository 를 사용할 수 있다.

반응형
Comments