1. ์ฝ๋๋ถ์
public class MemberService
{
private final MemberRepository memberRepository = new MemoryMemberRepository();
//ํ์๊ฐ์
public long join (Member member)
{
//๊ฐ์ ์ด๋ฆ์ด ์๋ ์ค๋ณต ํ์ ๋ฐ์ ์ ์ค๋ฅ ๋ฉ์ธ์ง ๋ณด๋ -> ์ค๋ณต ์์ผ๋ฉด ๋ค์ ๋จ๊ณ ์์ฐจ ์คํ
vaildateDuplicateMember(member);
memberRepository.save(member);
return member.getId();
}
private void vaildateDuplicateMember(Member member) { //Member type์ ๋ณ์ member๊ฐ ์ธ์๋ก ๋ค์ด์ด.
memberRepository.findbyName(member.getName()) // ์ธ์์ name์ด ์ ์ฅ์์ ์๋์ง ์กฐํ
.ifPresent(m -> { //๊ฐ์ด ์กด์ฌํ๋ฉด ๋ฐ์ ๋ฉ์ธ์ง๋ฅผ ๋ด๋ณด๋ธ๋ค.
throw new IllegalStateException("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
});
}
//์ ์ฒด ํ์ ์กฐํ
public List<Member> findMember()
{
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId) { //์ธ์๋ก ์ค์๊ฐ ๋ฃ์ผ๋ฉด ํด๋น ๊ฐ์ id ์๋์ง ์ฐพ๋๋ค.
return memberRepository.findbyId(memberId);
}
}
2. ๋ชฐ๋๋ ๋ด์ฉ ์ ๋ฆฌ
(1)Optional<T> ~ ifpresent((value) ->{์คํ๋ฌธ}) //()์์ ๋๋ค์
: Optional ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด value๋ก ๊ฐ์ด ์ ๋ฌ๋๊ณ , ๋๋ค์์ด ์คํ๋จ.
Optional ๊ฐ์ฒด๊ฐ ๊ฐ์ด ์์ผ๋ฉด value๊ฐ ๋น. ()์์ด ์คํ๋์ง ์์.
**ํด๋น ์์ ์์ memberRepository.findbyName์ Optional ๊ฐ์ฒด๊ฐ ๋ฐํ ์๋ฃํ์ธ ๋งค์๋ ์ด๋ค.
(2) Thorw new Exception("๋ฌธ์ฅ")
: ํ๋ก๊ทธ๋จ์ ๊ฒฐ๊ณผ๊ฐ ์ ์ ํ ์ํ๊ฐ ์๋ ๋, ์ ์ ํ ์ํ๊ฐ ์๋์ ์๋ฆฌ๋ ๋ฌธ์ฅ์ ์ถ๋ ฅํจ.
**illegalStateException() = ์๊ตฌ๋ ๋ช ๋ น์ด ์ ์ ํ ์ํ๊ฐ ์๋์ ๋ํ๋ด๋ ๋ฌธ์ฅ
(3)Intellij์์ Ctrl + Alt + M ์ ์ด๋ค ๋งค์๋๋ฅผ ์ถ์ถํ๋ ๋จ์ถํค!
:๋งค์๋ ์์ ๋งค์๋์ ์ฝ๋๊ฐ ๋ง์ ์ง์ ๋ถํ๊ณ ๋งค์๋ ๋ด์ฉ์ด ํ ๋์ ์ ๋ณด์ผ ๋, ์ฌ์ฉํ ์ ์๋ค.
ํด๋น ๋งค์๋๋ฅผ ์ ์ธ๋ง ํ๊ณ ๋ด์ฉ์ ๊ฒ ๋งค์๋์ ๋ฐ์ผ๋ก ๋น ์ง๋ค.
(4)public final class ํด๋์ค์ด๋ฆ {}
: final์ ํด๋น ํด๋์ค์ ์์์ ๊ธ์ง์ํจ๋ค.