JPA 기본 메서드 vs JPQL

노혁·2023년 7월 10일
1
post-thumbnail

👊 JPA 기본 메서드 vs JPQL

이번 글에서는 JPA에서 기본으로 제공하는 메서드와 JPQL 둘 중 어떤 상황에서 무엇이 더 효율적인지 알아보겠습니다.

먼저 JPA의 기본 메서드들을 알아보겠습니다.

findAll()
findById(id)
save(member)
saveAll(memberList)
delete(member)
deleteAll(memberList)
count()
exists(id)
flush()

JPA는 위와 같이 기본적으로 제공하는 메서드들이 있습니다.

다음으로 Native Query를 사용한 코드를 보겠습니다.

JPQL은 직접 쿼리 문을 작성하여 조금 더 복잡한 쿼리 문을 수행할 수 있습니다. 위의 코드는 실제 사용헀던 코드로 post를 투표 수 역순으로 정렬해주는 메서드입니다.

💪 장단점

JPA 기본 메서드들의 장단점

장점

  • 사용하기 쉽고 간편하며, 반복적인 CRUD 작업을 간단히 처리할 수 있습니다.
  • 데이터베이스 종속성을 줄여주고, 개발자는 데이터베이스에 직접 접근하지 않고도 데이터 조작이 가능합니다.

단점

  • 단순한 CRUD 작업 이상의 복잡한 쿼리를 처리하기 어렵습니다.
  • 유연한 쿼리 작성이 어렵기 때문에 성능 최적화나 고급 기능을 구현하기에는 한계가 있습니다.

JPQL의 장단점

장점

  • 객체 지향적인 쿼리 언어로, 엔티티와 관련된 복잡한 쿼리를 작성할 수 있습니다.
  • 엔티티 간의 관계를 쉽게 다룰 수 있으며, 객체 지향적인 특징을 활용하여 쿼리를 작성할 수 있습니다.

단점

  • JPQL은 SQL을 추상화한 언어이기 때문에 일부 기능이 SQL에 비해 제한적일 수 있습니다.
  • 복잡한 쿼리를 작성할 경우 성능 이슈가 발생할 수 있으며, 적절한 인덱스나 최적화 기법을 적용해야 합니다.

👇 어떤 상황에 무엇을 사용하는게 더 좋을까??

먼저 JPA는

  • 간단한 CRUD

이게 JPA 기본 메서드의 핵심이자 꽃이죠.

JPQL은

  • 복잡한 쿼리 문이 필요할 때
  • 객체지향적인 특징을 활요해야 할 때
  • 집계 함수나 그룹화 작업을 수행해야 할 때

위와 같은 상황에서 이점을 얻을 수 있는게 바로 JPQL입니다.

이렇게 보면 JPQL이 정말 좋아보이지만 JPQL을 자주 사용하지 않는 개발자들은 쿼리 문을 이해하지 못할 수 있고 가독성 부분에서 떨어질 수 있습니다. 이러한 점들도 있으니 주의하고 잘 선택하여 사용해주시길 바랍니다.

끝내며

JPA와 JPQL을 비교해가며 어떤 상황에 무엇을 사용하는게 더 좋을지 설명해보았는데
신중히 선택하여 좋은 코드를 작성하시길 바랍니다.
끝까지 읽어주셔서 감사합니다.

profile
백엔드 개발자입니다.

0개의 댓글