Blog

[CS]32 ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?

Author
Summary
ORM사용하면서 쿼리 복잡해지는 해결 방안
Category
Study
Tags
CS
PinOnMain
Favorite
Memory
Memory Date
2023/10/31
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
4 more properties
ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?
ORM을 사용하다가 쿼리가 복잡해지면 두 가지 주요 전략이 있습니다.
첫 번째는 ORM이 제공하는 기능을 최대한 활용하는 것입니다. 대부분의 ORM은 복잡한 쿼리를 작성하고 최적화하기 위한 다양한 기능을 제공하기 때문에 공식 문서를 확인하고 ORM이 제공하는 다양한 옵션을 적용해보는 것이 방법입니다.
두 번째 전략은 순수 SQL을 직접 작성하는 것입니다. ORM은 쉽고 간편 할 수도 있지만 모든 상황에 완벽하게 맞지는 않습니다. 직접 SQL을 작성하는 게 더 효과적일 수도 있습니다. 특히 성능적 개선을 위해서는 원하는 쿼리를 자세히 작성한다면 자동화된 동적 쿼리보다 성능적으로 우수 할 가능성이 높습니다.
따라서 두 전략을 적절히 혼합하거나 목적에 맞게 사용하는 것이 가장 좋은 방법입니다. 항상 성능과 유지보수성 사이의 균형, 목적을 고려하는 게 중요합니다.
프로젝트를 통해서 JPA로 자동화된 동적 쿼리에 의존하다가 성능적 개선을 위해서 JPQL로 직접 쿼리문을 튜닝하기도 했습니다. 이 과정에서 좀 더 발전된 QueryDSL을 사용하면서 JPA의 장점인 쿼리문을 작성해주는 편리함과 더해서 쿼리문을 직접 사용하지 않고 Java메소드 사용하듯이 사용 할 수 있는 QueryDSL을 사용하면서 JPQL의 단점인 쿼리문을 직접 작성한다는 문제점을 보완할 수 있었습니다.
따라서 이와 같이 ORM의 기능을 활용하고, 좀 더 깊게 알아볼수록 성능적 개선을 위한 부분에서는 쿼리 튜닝을 할 수 있고, 튜닝에서도 보다 효율적이고 오류를 발견 하기 유리하고 유지보수적인 측면을 고려 할 수 있는 QueryDSL까지 사용해보면서 다양한 기술을 통해서 쿼리를 다양하게 다룰 줄 알아야 한다고 생각되었습니다.