Spring JPA [활용] 정리3

신재원·2023년 2월 6일
0

Spring JPA 활용

목록 보기
9/18

📌 JPA에서 단 건 (findOne)이 아닌 List를 조회해야될 경우

  • JPQL 쿼리를 작성해줘야된다.
    • 예시

      em.createQuery("select i from Item i", Item.class).getResultList();

  • getResultList(); 호출전에 페이징 쿼리
    (.setFirstResult() .setMaxResults() ) 등 작성 가능하다.

@Transactional

  • 읽기 (조회) 전용 일때는 @Transactional (readOnly = true) 사용 권장
    • 영속성 컨텍스트를 플러시 하지 않음으로 성능이 더 좋아진다.
  • 쓰기 일때는 @Transactional default로 사용
    • 쓰기 일때 readOnly = true를 하게되면 데이터 변경이 안된다.

📌 생성자 주입 (Injection)

  • 1단계 (필드 주입) (테스트 코드를 작성 X)
@Autowired
private MemberRepository memberRepository;
  • 2단계 (Setter 주입) (치명적 단점 set호출해 변경이 가능함)
private MemberRepository memberRepository;

@Autowired
public void setMemberRepository (MemberRepository memberRepository){
	this.memberRepository = memberRepository;
}
  • 3단계 (생성자 주입) (많이 사용)
private MemberRepository memberRepository;

@Autowired
public MemberService (MemberRepository memberRepository){
	this.memberRepository = memberRepository;
}
  • 📍 최종
    (@RequiredArgsConstructor 사용) (final이 있는 필드를 가지고 생성자를 만들어준다.)
@RequiredArgsConstructor

private final MemberRepository memberRepository;

0개의 댓글