•
김민선
⇒ Native Query나 Query DSL을 활용하여 더 복잡한 쿼리를 작성할 수 있습니다.
또는 Stored Procedure를 활용해서 복잡한 로직을 데이터베이스에 위임하고 ORM에서는 저장 프로시저를 호출하여 결과를 처리할 수 있습니다.
또는 복잡한 쿼리 로직을 처리할 수 있는 Custom Repository를 만들거나 Specification 패턴을 도입하여 쿼리를 모듈화하고 유지보수성을 향상시킬 수 있습니다.
유민아
⇒ 쿼리가 복잡할 때 ORM으로 표현하는데 한계가 있고 연산 속도가 느리기 때문에 이를 해결하기 위해서는 문자열 형태로 직접 쿼리문을 작성하는 JPQL이나 자바 코드로 작성하는QueryDSL을 사용하는 것을 권장합니다. 그 외에도 Native SQL을 사용하거나 ORM의 고급, 확장 기능을 활용하는 등의 방법이 있습니다.
•
김한신
1.
인덱스 사용: 데이터베이스에서 적절한 인덱스를 사용하여 쿼리의 성능을 최적화합니다.
2.
캐싱 활용: ORM이 제공하는 캐싱 기능을 활용하여 자주 사용되는 쿼리의 결과를 캐싱해 둡니다.
3.
코드 분리와 모듈화: 복잡한 쿼리를 작은 단위로 나누고 모듈화하여 코드를 간소화합니다.
4.
ORM 특정 기능 활용: ORM 프레임워크가 제공하는 특정 기능을 활용하여 간결한 쿼리를 작성하는 연습이 중요합니다.
위의 전략들을 지키면 데이터베이스 성능을 향상시키고 코드를 더 효율적으로 관리할 수 있습니다.
박준영
⇒ ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?
네이티브 SQL 쿼리를 사용 : 데이터베이스 종류에 따라 사용 할 수 있는 SQL 구문이 다르므로 OPEN SQL에서 지원하지 않는 다양하고 복잡한 SQL 사용 가능하다.
Stored Procedure 사용 : 특정 로직의 쿼리를 함수로 만들어 놓은 것이다. 페이징 쿼리와 같이 자주 사용되는 쿼리가 있다면 함수로 한 번 만들어놓고 사용하게 되면 성능 상으로나 코드 재사용성 등에 이점이 있다.
ORM 확장 : ORM 확장 라이브러리를 사용하거나, 필요하다면 ORM을 변경하여 복잡한 쿼리에 대응할 수 있다.