[ 김영한 Querydsl #7 ] - 중급 문법 (4) : SQL 함수, 벌크 연산

정동욱·2023년 7월 20일
post-thumbnail

이번 글에서는 Querydsl을 사용해 SQL의 함수를 사용하고, 벌크 연산을 처리하는 방법에 대해 알아보겠습니다.

먼저 SQL의 함수를 사용할 때에는 Expressions 객체를 사용합니다. 이걸 이용해 회원이 이름을 변경하는 쿼리를 만들어보겠습니다.

// SQL Function (DB 함수 사용)
@Test
void sqlFunctio1() {
    List<String> result = queryFactory
        .select(
            Expressions.stringTemplate(
            	         "function('replace', {0}, {1}, {2})",
                         member.username, "member", "M")
            )
            .from(member)
            .fetch();

    for (String s : result) {
        System.out.println("s = " + s);
    }
}

Expressions의 stringTemplate() 매서드를 사용해 DB의 함수를 사용하겠다는 것을 명시하고 원하는 함수를 사용하면 됩니다.

그리고 벌크 연산 처리 방법을 알아볼텐데요, 사실 벌크 연산이라고 해봤자 별 거는 없습니다. 단지 주의점만 하나 있는데요, 바로 벌크 연산 시에는 해당 쿼리 실행 후에는 EntityManager를 이용해 영속성 컨텍스트를 지워야 한다는 것입니다.

다음 글에서는 여지껏 배운 것들로 조회 API 하나를 만들어보겠습니다.

profile
거인의 어깨 위에서 탭댄스를

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

소중한 정보 감사드립니다!

답글 달기