작성
·
3
0
조회 쿼리 작성하실 때 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 스크린샷 보기
도움이 되셨길 바랍니다! 추가적인 질문이 있으시면 언제든지 물어보세요.