[java] Java Querydsl을 사용하여 연관된 엔티티 조회하기

Java 애플리케이션에서 데이터베이스 연동을 위해 Querydsl을 사용하는 경우, 연관된 엔티티를 조회해야 하는 경우가 있습니다. 이번 블로그 포스트에서는 Querydsl을 사용하여 연관된 엔티티를 조회하는 방법에 대해 알아보겠습니다.

1. Querydsl 설정하기

먼저 Querydsl을 사용하기 위해 의존성을 추가해야 합니다. 프로젝트의 빌드 관리 도구에 따라 다음과 같이 의존성을 추가하세요.

<dependency>
  <groupId>com.querydsl</groupId>
  <artifactId>querydsl-core</artifactId>
  <version>5.0.0</version>
</dependency>
<dependency>
  <groupId>com.querydsl</groupId>
  <artifactId>querydsl-jpa</artifactId>
  <version>5.0.0</version>
</dependency>

2. Querydsl 사용하기

Querydsl을 사용하여 연관된 엔티티를 조회하려면 JPQLQuery 객체를 생성하고, join 메서드를 사용하여 연관된 엔티티를 조인해야 합니다. 다음은 예시 코드입니다.

QUser user = QUser.user;
QOrder order = QOrder.order;

JPQLQuery<User> query = new JPAQueryFactory(entityManager)
    .select(user)
    .from(user)
    .join(user.orders, order)
    .fetchJoin();

List<User> users = query.fetch();

위의 코드에서는 QUser 클래스와 QOrder 클래스는 Querydsl이 자동으로 생성한 엔티티 클래스입니다. user.ordersUser 엔티티의 orders 필드를 의미하며, fetchJoin() 메서드를 사용하여 연관된 Order 엔티티를 함께 조회합니다.

3. 결과 사용하기

조회한 연관된 엔티티를 사용하려면 이를 활용하는 코드를 작성해야 합니다. 다음은 예시 코드입니다.

for (User user : users) {
    List<Order> orders = user.getOrders();
    // orders를 활용한 로직 작성
}

위의 코드에서는 users 리스트에 포함된 User 객체들을 순회하면서 각각의 User 객체의 getOrders() 메서드를 사용하여 연관된 Order 객체 리스트를 얻습니다. 이후 orders를 활용하여 필요한 로직을 작성하면 됩니다.

결론

이번 블로그 포스트에서는 Java Querydsl을 사용하여 연관된 엔티티를 조회하는 방법을 알아보았습니다. Querydsl을 사용하면 간편하고 효율적으로 연관된 엔티티를 조회할 수 있습니다. 참고로, Querydsl의 버전은 프로젝트에 맞게 설정해야 합니다.