Querydsl - JPAQueryFactory

Seongjin Jo·2022년 12월 28일
0

Querydsl

목록 보기
3/8

✔ JPAQueryFactory


Querydsl 생성 후 EntityManager 를 통해 쿼리 결과를 반환할 수 있도록 JPAQueryFactory를 선언한다.

선언 방식은 3가지가 있다.

1.클래스 내부에 선언

@PersistenceContext
EntityManager em;

public void ex(){
	...
    JPAQueryFactory queryFactory = new JPAQueryFactory(em);
	...
}

2.필드 선언

@PersistenceContext
 EntityManager em;
 
JPAQueryFactory queryFactory;

public void ex(){
	queryFactory. ~~~~
}

JPAQueryFactory를 필드로 제공하면 동시성 문제는 어떻게 될까? 동시성 문제는 JPAQueryFactory를 생성할 때 제공하는 EntityManager(em)에 달려있다. 스프링 프레임워크는 여러 쓰레드에서 동시에 같은 EntityManager에 접근해도, 트랜잭션 마다 별도의 영속성 컨텍스트를 제공하기 때문에, 동시성 문제는 걱정하지 않아도 된다

3.Config 선언

@Configuration
public class QuerydslConfiguration {

    @PersistenceContext
    private EntityManager entityManager;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(entityManager);
    }

}
@Autowired
JPAQueryFactory queryFactory;

이렇게 Configuration 구현체를 만들어서 빈을 주입해놓고 사용하는 클래스에서 @Autowired로 빈을 땡겨와서 사용할 수 있다.

0개의 댓글