QueryFactory 주입 방법

Hyeon·2023년 7월 29일
0

Querydsl

목록 보기
6/7

1. 생성자 내부에서 설정

public MemberJpaRepository(EntityManager em) {
    this.em = em;
    this.queryFactory = new JPAQueryFactory(em);
}

2. 외부에서 injection 받기

QueryFactory를 아래와 같이 스프링 빈으로 등록한다.

@Bean
JPAQueryFactory jpaQueryFactory(EntityManager em){
    return new JPAQueryFactory(em);
}

이 방법의 경우, QueryFactory 변수를 final 로 선언하면 @RequiredArgsConstructor 어노테이션을 이용해 생성자 없이 주입할 수도 있다.

동시성 문제는 걱정하지 않아도 된다. 왜냐하면 여기서 스프링이 주입해주는 엔티티 매니저는 실제 동작 시점에 진짜 엔티티 매니저를 찾아주는 프록시용 가짜 엔티티 매니저이다. 이 가짜 엔티티 매니저는 실제 사용 시점에 트랜잭션 단위로 실제 엔티티 매니저(영속성 컨텍스트)를 할당해준다.

출처

  • 인프런 김영한 님의 실전! Querydsl 강의를 수강하며 정리한 내용입니다.
profile
컴공학부생입니다.

0개의 댓글