[Querydsl-JPA] Querydsl JPA를 사용하며.. "*" 아스타리스크 사용방법

2020. 12. 20. 07:00·Develop/spring-data
반응형

개발할 때 테이블의 모든 컬럼을 조회할 경우가 있습니다. 그때 Querydsl-JPA를 사용할 때 어떻게 사용할 수 있는지 작성해보겠습니다.

모든 소스는 github에 올려두었습니다.

나를 닮았다고 한다...

먼저 하고 싶은 쿼리가 어떤 것인지 작성해보겠습니다.

select
    s.*
    , etc_option
  from staff s
      join store st on s.store_id = st.id
 where s.name = 'staffV'
 limit 1

 

이것과 동일한 Querydsl을 작성해보겠습니다.

먼저 Vo를 생성합니다.

@Getter @Setter @ToString
public class StaffEtcVo {

    private Staff staff;
    private String address;
}

필드에 Staff Entity를 선언합니다

 

다음으로 Querydsl-JPA를 작성합니다.

@Override
public StaffEtcVo findStaffAndEtcOption(String name) {
    return jpaQueryFactory
            .select(Projections.fields(StaffEtcVo.class,
                    staff,
                    store.address
                    ))
            .from(staff)
                .join(store)
                    .on(store.id.eq(staff.storeId))
            .where(staff.name.eq(name))
            .fetchFirst();
}

그럼 아래와 같은 쿼리를 생성할 것입니다. 

select
        staff0_.id as col_0_0_,
        store1_.address as col_1_0_,
        staff0_.id as id1_0_,
        staff0_.age as age2_0_,
        staff0_.last_name as last_nam3_0_,
        staff0_.name as name4_0_,
        staff0_.store_id as store_id5_0_ 
    from
        staff staff0_ 
    inner join
        store store1_ 
            on (
                store1_.id=staff0_.store_id
            ) 
    where
        staff0_.name='staffN' limit 1

확인해보시면 모든 Staff의 필드를 조회하는 것을 확인할 수 있습니다.

 

Tip

만약 Vo객체에서 staffEtcVo.getStaff().getId() 가 불필요하고 바로 staffEtcVo.getId()를 하고 싶다면 @JsonUnwrapped 붙혀줍니다. Unwrapped를 시켜줍니다!

@Getter @Setter @ToString
public class StaffEtcVo {

    @JsonUnwrapped
    private Staff staff;
    private String address;
}

단! API의 Response값으로 적용되기 때문에 바로 조회 후는 불가능합니다!

반응형

'Develop > spring-data' 카테고리의 다른 글

[Querydsl] 성능개선 - 2편 ( N + 1 )  (0) 2021.02.01
[Querydsl] 성능 개선 1편  (0) 2021.01.29
[Querydsl] Querydsl을 적용하며.. class 파일명 주의  (1) 2020.12.18
[JPA] Querydsl에 pageable을 적용하며... 2가지 방법을 소개하겠습니다.  (2) 2020.12.10
[Querydsl] Querydsl 사용방법 3가지  (0) 2020.12.07
'Develop/spring-data' 카테고리의 다른 글
  • [Querydsl] 성능개선 - 2편 ( N + 1 )
  • [Querydsl] 성능 개선 1편
  • [Querydsl] Querydsl을 적용하며.. class 파일명 주의
  • [JPA] Querydsl에 pageable을 적용하며... 2가지 방법을 소개하겠습니다.
에디개발자
에디개발자
------ 한발자국씩 성장하자 ------ Github: https://github.com/yongtaelim LinkedIn: https://www.linkedin.com/in/%EC%9A%A9%ED%83%9C-%EC%9E%84-622b69218/
    250x250
  • 에디개발자
    에디블로그
    에디개발자
    • 분류 전체보기 (207) N
      • Develop (51)
        • spring-data (28)
        • spring-batch (7)
        • devops (5)
        • java (5)
        • kotlin (3)
        • database (2)
      • MindControl (12)
      • TroubleShooting (16)
      • Study (76)
        • kotlin (16)
        • java (15)
        • spring (6)
        • test (4)
        • message-queue (10)
        • object (22)
      • Develop Tool (1)
      • Daily Develop (7)
      • Book (5)
      • AI (27) N
        • Claude (12) N
        • ChatGPT (6) N
        • Cursor (3) N
        • Gemini (4) N
        • 트랜드 (2)
      • 개발 트렌드 (8) N
        • 데일리 픽 (8) N
  • 인기 글

  • 태그

    claude
    Ai
    엘레강트
    kotlin
    OpenAI
    프로그래밍
    JPQL
    클로드
    JPA
    AI 활용
    객체지향
    ChatGPT
    스터디
    에디
    ai 정보
    anthropic
    개발자 도구
    코틀린
    java
    queryDSL
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에디개발자
[Querydsl-JPA] Querydsl JPA를 사용하며.. "*" 아스타리스크 사용방법
상단으로

티스토리툴바