객체 그래프 탐색 VS 순수 쿼리 중 어느 게 더 효율적인가?!

dev-jjun·2023년 8월 13일
0

Server

목록 보기
19/33
post-thumbnail

비즈니스 로직에서 특정 객체를 조회하는 과정에서 연관관계 매핑에 의해 중간에 꽤나 많은 객체들을 거쳐야 하는 상황이라면! 과연, 객체 그래프 탐색과 순수쿼리(@Query or DAO) 중 어떤 것이 성능 측면에서 더 효율적일까?

객체 그래프 탐색 이 순수 쿼리보다 성능 면에서 더 우수한 경우 가 많다!

🧐 왜 그러죠?!

  1. 쿼리 실행 횟수

    비교설명
    객체 그래프 탐색1번의 쿼리로 여러 개의 관련된 객체를 가져올 수 있다. ex. child.getParent()
    순수 쿼리엔티티를 가져오기 위해 별도의 쿼리를 수행하는 과정에서 데이터베이스에 추가적인 요청을 보낸다 → 쿼리 실행 횟수 증가
  2. 쿼리 최적화

    비교설명
    객체 그래프 탐색Hibernate와 같은 ORM 프레임워크는 연관관계를 미리 로딩하거나 지연 로딩을 사용하여 쿼리 최적화 가능
    순수 쿼리ORM 프레임워크의 최적화를 사용할 수 없으므로 불필요한 데이터나 로딩 지연으로 인한 성능 저하가 발생할 수 있음
  3. 캐시 사용

    비교설명
    객체 그래프 탐색ORM 프레임워크는 한 번 가져온 엔티티를 캐시에 저장하여 다시 요청할 때 2번 이상 같은 객체를 가져오지 않도록 보장
    순수 쿼리캐시를 직접 활용할 수 없으므로 동일한 데이터를 가져오는 경우에도 매번 데이터베이스에 쿼리를 수행해야 함

성능은 데이터베이스 스키마, 인덱스, 데이터 양, 네트워크 지연 등 여러 요인에 의해 결정되므로, 이들을 고려하여 상황에 따라 선택해야 한다.

profile
서버 개발자를 꿈꾸며 성장하는 쭌입니다 😽

0개의 댓글