전체 보기
📗

[스프링부트와 JPA 활용1] 4. 도메인 개발

작성일자
2022/11/28
태그
SUB PAGE
프로젝트
JPA 활용1
책 종류
1 more property

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
복사