ํ์ ๋๋ฉ์ธ ๊ฐ๋ฐ
ํ์ ๋ฑ๊ธ (Grade.class)
package hello2.demo.member;
public enum Grade {
BASIC,
VIP
}
ํ์ ์ํฐํฐ, ๋ฉค๋ฒ (Member)
id, ์ด๋ฆ, ๋ฑ๊ธ
package hello2.demo.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;
}
}
ํ์ ์ ์ฅ์
ํ์ ์ ์ฅ์ ์ธํฐํ์ด์ค
ํ์์ ์ ์ฅํ๊ณ
id๋ฅผ ์กฐํํด์ Member ๋ฐํ
package hello2.demo.member;
public interface MemberRepository {
void save(Member member);
Member findById(Long memberId);
}
๋ฉ๋ชจ๋ฆฌ ํ์ ์ ์ฅ์ ๊ตฌํ์ฒด
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ง ํ์ ์ด ์๋์๋ค.
๊ทธ๋๋ ๊ฐ๋ฐ์ ์งํํด์ผ ํ๋ ๊ฐ์ฅ ๋จ์ํ, ๋ฉ๋ชจ๋ฆฌ ํ์ ์ ์ฅ์๋ฅผ ๊ตฌํํด์ ์ฐ์ ๊ฐ๋ฐ์ ์งํํ์.
ํ์์ ์ ์ฅ์(map๊ตฌ์กฐ)์ ์ ์ฅํ๊ธฐ - put()
ํ์์ ์ ์ฅ์์์ ์กฐํํ๊ธฐ - get()
์ฐธ๊ณ : HashMap ์ ๋์์ฑ ์ด์๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ConcurrentHashMap์ ์ฌ์ฉํ์.
package hello2.demo.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);
}
}
๋งต (Map)
"์ฌ๋"์ ์๋ก ๋ค๋ฉด ๋๊ตฌ๋ ์ง
"์ด๋ฆ" = "ํ๊ธธ๋",
"์์ผ" = "๋ช ์ ๋ฉฐ์น "
key value
people | ์ฌ๋ |
baseball | ์ผ๊ตฌ |
๋งต(Map)์ ๊ฐ์ฅ ํฐ ํน์ง์ด๋ผ๋ฉด key๋ก value๋ฅผ ์ป์ด๋ธ๋ค๋ ์ ์ด๋ค.
put
key์ value๊ฐ String ํํ์ธ HashMap์ ๋ง๋ค๊ณ ์์์ ๋ณด์๋ ์์ ์ ํญ๋ชฉ๊ฐ๋ค์ ์ ๋ ฅํด ๋ณด์.
HashMap<String, String> map = new HashMap<>();
map.put("people", "์ฌ๋");
map.put("baseball", "์ผ๊ตฌ");
key์ value๋ ์ ์์ ์์ ๋ณด๋ฏ์ด put ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ถ๊ฐ
get
key์ ํด๋นํ๋ value๊ฐ์ ์ป๊ธฐ ์ํด์๋ get ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
System.out.println(map.get("people")); // "์ฌ๋" ์ถ๋ ฅ
map ๊ฐ์ฒด์ ํค(Key) "people"์ ๋์ํ๋ ๊ฐ(Value) "์ฌ๋"์ด ์ถ๋ ฅ๋๋ค.
ํ์ ์๋น์ค
ํ์ ์๋น์ค ์ธํฐํ์ด์ค
package hello2.demo.member;
public interface MemberService {
void join(Member member);
Member findMember(Long memberId);
}
ํ์ ์๋น์ค ๊ตฌํ์ฒด
package hello2.demo.member;
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
@Override
public void join(Member member) {
}
@Override
public Member findMember(Long memberId) {
return memberRepository.findById(memberId);
}
}