1. 회원 리포지토리 개발
1) 구현 기능
•
회원 등록
•
회원 목록 조회
2) 구현 순서
•
회원 엔티티 개발(이미 완료)
•
회원 리포지토리 개발
•
회원 서비스 개발
•
회원 기능 테스트
3) 회원 엔티티
jpabook/jpashop/domain/Member.java
•
속성: 회원id(PK), 이름, 주소, 주문list
◦
주문list는 일대다 관계인 회원-주문 관계로 인해 생김
4) 회원 리포지토리
jpabook/jpashop/repository/MemberRepository.java
•
jpql과 sql 차이
◦
sql은 테이블을 대상으로 query함.
◦
jpql은 엔티티 객체를 대상으로 query함.
2. 회원 서비스 개발
1) 회원 서비스
jpabook/jpashop/service/MemberService.java
2) 여러 가지 주입 방법 비교
•
field injection
◦
정의)
@Autowired // 우리가 만든 MemberRepository를 주입(필드 주입)
private MemberRepository memberRepository;
Java
복사
•
setter injection
◦
정의)
private MemberRepository memberRepository;
@Autowired // memberRepository 바꾸기 위해 setter injection 사용
public void setMemberRepository(MemberRepository memberRepository) {
this.memberRepository = memberRepository; // 스프링이 바로 주입x. 들어와서 주입
}
Java
복사
◦
장점)
▪
test code 작성 시 mock 직접 주입 가능.
•
field injection은 주입 까다로움
▪
즉, memberRepository 바꿀 수 있음. 가짜 memberRepository 주입 가능.
◦
단점) 런타임에 바꿀 일 없음
•
생성자 injection
◦
정의)
private MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
Java
복사
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
Java
복사
@AllArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
Java
복사
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
Java
복사