***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
기본적인 find 메서드 대신 Query Builder를 사용한 코드를 학습하면서, 데이터베이스 쿼리 구성의 유연성을 확보하고, 연관된 데이터를 효율적으로 로딩하는 방법에 대한 깊이 있는 이해를 얻을 수 있었습니다.
첫째, leftJoinAndSelect를 통한 연관 데이터의 효율적인 로딩의 중요성을 명확히 인식하게 되었습니다. findAll과 findOne 함수 모두에서 leftJoinAndSelect 메서드를 사용하여 movie 엔티티와 연관된 director, genres, 그리고 detail 엔티티를 한 번의 쿼리로 함께 로딩하는 방식을 채택한 것은 N+1 문제를 방지하고 데이터 조회 성능을 최적화하는 데 매우 효과적인 전략입니다. 마치 여러 정보를 한 번의 요청으로 가져와야 하는 웹 페이지에서 필요한 모든 데이터를 미리 로딩하여 사용자 경험을 향상시키는 것과 유사한 원리입니다. ORM의 관계 설정을 기반으로 Query Builder를 활용하여 연관 데이터를 효율적으로 가져오는 것은 애플리케이션의 성능을 크게 향상시킬 수 있는 핵심 기술임을 깨달았습니다.
둘째, Query Builder를 사용함으로써 얻는 쿼리 구성의 명시성과 제어력의 장점을 경험했습니다. 기본적인 find 메서드는 간단한 조회에는 유용하지만, 복잡한 조건이나 특정 컬럼만 선택적으로 조회해야 하는 경우에는 Query Builder가 더 강력한 기능을 제공합니다. 특히, where 메서드를 사용하여 조회 조건을 명시적으로 설정하고, 파라미터 바인딩을 통해 SQL Injection 공격을 방지하는 안전한 코드를 작성할 수 있다는 점이 인상 깊었습니다. 마치 복잡한 퍼즐을 풀 때, 각 조각의 위치와 역할을 명확히 파악하고 조립하는 것처럼, Query Builder는 데이터베이스 쿼리를 명확하게 구성하고 제어할 수 있도록 돕습니다.
셋째, 데이터베이스 스키마와 ORM 매핑에 대한 깊이 있는 이해의 필요성을 다시 한번 강조하게 되었습니다. Query Builder를 효과적으로 사용하기 위해서는 데이터베이스 테이블 간의 관계 설정과 TypeORM 엔티티 간의 매핑을 정확히 이해하는 것이 필수적입니다. 어떤 컬럼이 서로 연결되어 있는지, 어떤 관계 유형인지 등을 파악해야 leftJoinAndSelect와 같은 메서드를 올바르게 사용할 수 있습니다. 마치 지도를 보고 원하는 목적지까지 길을 찾기 위해서는 지형 정보와 도로 연결 정보를 정확히 이해해야 하는 것과 같습니다. ORM의 추상화된 계층 아래에서 데이터베이스가 어떻게 구성되어 있는지 이해하는 것은 Query Builder를 능숙하게 다루기 위한 중요한 전제 조건입니다.
넷째, getManyAndCount()와 getOne() 메서드의 명확한 용도 구분을 통해 데이터 조회 목적에 따른 최적의 메서드 선택의 중요성을 인지했습니다. findAll 함수에서 getManyAndCount()를 사용하여 조회된 엔티티 배열과 전체 개수를 함께 가져오는 것은 페이징 처리 등 목록 조회 시 유용합니다. 반면, findOne 함수에서 getOne()을 사용하여 단일 엔티티 객체를 반환하는 것은 특정 ID에 해당하는 상세 정보를 조회하는 데 적합합니다. 데이터 조회 목적에 따라 적절한 메서드를 선택하는 것은 코드의 명확성을 높이고 불필요한 데이터 처리를 방지하는 데 기여합니다. 마치 다양한 종류의 도구 중에서 작업의 목적에 맞는 최적의 도구를 선택하여 사용하는 것과 같습니다.
마지막으로, Query Builder 학습은 SQL에 대한 이해를 심화시키고 데이터 중심 사고 능력을 향상시키는 데 큰 도움이 된다는 것을 다시 한번 깨달았습니다. Query Builder를 사용하면서 생성되는 SQL 쿼리를 확인하고, 다양한 쿼리 옵션을 실험하는 과정은 데이터베이스 쿼리의 작동 원리를 자연스럽게 학습하도록 유도합니다. 이는 ORM 사용 능력을 넘어 데이터베이스 관리 및 성능 최적화 능력을 향상시키는 데에도 긍정적인 영향을 미칠 것이라고 생각합니다. 마치 외국어를 배우면서 문법 규칙을 이해하는 것뿐만 아니라, 다양한 표현 방식을 익히고 실제 대화에 적용해보는 과정을 통해 언어 능력이 향상되는 것과 유사한 경험입니다.




#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB