강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

민상님의 프로필 이미지
민상

작성한 질문수

개인적으로 궁금해서 여쭤봅니다!

작성

·

3

0

image.png

조회 쿼리 작성하실 때 Native Query로 작성하신 이유가 궁금합니다.

비슷한 상황에서 저는 Query Dsl로 생성해서 작성하는 편이라서요..! JPA 관한 질문이긴 하지만 쿠케님의 관점이 궁금해서 여쭤봅니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
민상님, 질문 주셔서 감사합니다!

Native Query를 사용하는 이유는 다양한데요, 주로 복잡한 SQL 쿼리가 필요한 경우에 사용됩니다. Spring Data JPA에서는 @Query를 통해 Native SQL을 실행할 수 있으며, 이는 복잡한 쿼리에 대해 JPA의 JPQL로 구현하기 힘들 때 특히 유용합니다.

Native Query의 주요 장점 중 하나는 데이터베이스에 직접적으로 접근하여 최적화된 SQL을 사용할 수 있다는 점입니다. 이는 특히 성능이 중요한 대규모 데이터에서 큰 장점을 제공합니다. 하지만, 데이터베이스에 종속적이게 되므로 데이터베이스 독립성을 확보하기 어렵다는 단점이 있죠.

반면 QueryDSL은 타입 안전성과 코드 자동 완성, 동적 쿼리 작성 기능이 뛰어나기 때문에 복잡한 동적 쿼리를 작성할 때 유리합니다. 따라서, 둘 중 어떤 것을 사용할지는 성능과 유지보수, 프로젝트의 특성에 따라 결정하는 것이 좋습니다.

Native Query를 사용하는 예제는 아래와 같습니다:

public interface UserRepository extends JpaRepository<User, Long> {

    @Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
    User findByEmailAddress(String emailAddress);
}

이미지 참고: IntelliJ IDEA 스크린샷 보기

도움이 되셨길 바랍니다! 추가적인 질문이 있으시면 언제든지 물어보세요.

민상님의 프로필 이미지
민상

작성한 질문수

질문하기