9/1 TIL 코드리팩토링 / 14. ORM 과 ORM이 복잡해지는 경우?

이승준·2023년 9월 3일
0
post-thumbnail

코드 리팩토링

코드를 큰 틀을 짜지 않고 짜서 그런가
객체지향프로그래밍과 많이 어긋나고,
가독성 오류찾기 보수 면에서 너무 떨어진다.

기능 단위로 함수로 만들면서 조금 나아진 것 같고
VSC의 좋은 기능을 알게 되었다.

  1. 리팩토링 기능
  • 스코프 조절도 가능하고 파일로 빼는 것도 가능하고.. 기능이많다.
  1. 네임변경
  • ctrl + f 나 shift + ctrl + f 로 일일히 바꿔줬는데 F2누르면 알아서 해주더라

기능이 익숙해질 때까지는 해놓고도 체크하겠지만
익숙해지면 코딩속도나 안정성 면에서 더 나아질것같다

ORM 이란??

ORM은 "Object-Relational Mapping"의 약어로, 객체와 관계형 데이터베이스 간의 상호작용을 관리하고 간소화하는 소프트웨어 개발 기술이나 패턴을 가리킵니다. 이것은 데이터베이스와 애플리케이션 코드 간의 중간 계층을 제공하여 개발자가 데이터베이스와 상호작용할 때 SQL 쿼리를 직접 작성하지 않고도 데이터를 조작할 수 있도록 합니다.

ORM은 다음과 같은 몇 가지 주요 목적을 가지고 있습니다:

  1. 객체 지향 프로그래밍과 데이터베이스 간의 불일치 해결: 객체 지향 프로그래밍 언어(예: Java, Python, C#)에서는 객체를 사용하여 데이터를 표현하고 관리하고, 데이터베이스는 테이블과 레코드로 데이터를 저장합니다. ORM은 이 둘 간의 차이를 해결하여 객체와 데이터베이스 간의 매핑을 제공합니다.

  2. SQL 쿼리 생성 및 실행: ORM은 개발자가 SQL 쿼리를 직접 작성하지 않아도 데이터베이스 작업을 처리할 수 있게 해줍니다. 대신, ORM은 객체에 대한 조작을 통해 필요한 SQL 쿼리를 자동으로 생성하고 실행합니다.

  3. 데이터베이스 독립성 제공: ORM은 다양한 관계형 데이터베이스 시스템 (예: MySQL, PostgreSQL, Oracle) 간에 코드 변경 없이 애플리케이션을 이식할 수 있도록 도와줍니다. 개발자는 ORM의 설정을 조정하여 다른 데이터베이스로 전환할 수 있습니다.

일반적인 ORM 라이브러리에는 Hibernate(Java), Entity Framework(C#), Django ORM(Python), Sequelize(Node.js) 등이 있습니다. 이러한 ORM 라이브러리를 사용하면 데이터베이스 작업을 보다 간편하게 수행할 수 있으며 코드 유지보수와 확장성을 향상시킬 수 있습니다.

만약 ORM을 사용하는데 쿼리가 복잡해지면??

ORM을 사용하면 간단한 데이터베이스 작업을 쉽게 처리할 수 있지만, 복잡한 쿼리 또는 데이터베이스 조작이 필요한 경우에는 ORM을 사용하는 것이 어려울 수 있습니다. 다음은 복잡한 쿼리를 처리하는 데 도움이 될 수 있는 몇 가지 전략과 팁입니다

  1. 원시 SQL 사용: ORM은 간단한 쿼리 작업을 처리하는 데 유용하지만, 때로는 복잡한 쿼리를 작성하거나 최적화해야 할 수 있습니다. 이런 경우, ORM이 제공하지 않는 경우에 한해 원시 SQL 쿼리를 사용하는 것이 좋을 수 있습니다. 대부분의 ORM 라이브러리는 원시 SQL을 실행할 수 있는 기능을 제공합니다.

  2. ORM의 고급 기능 활용: ORM 라이브러리는 일반적으로 다양한 고급 기능을 제공합니다. 이러한 기능을 활용하여 복잡한 쿼리를 작성하고 실행할 수 있습니다. 예를 들어, 조인, 하위 쿼리, 집계 함수 등을 사용할 수 있습니다.

  3. ORM의 쿼리 빌더 사용: ORM은 종종 쿼리 빌더라고하는 도구를 제공합니다. 이러한 쿼리 빌더를 사용하면 복잡한 쿼리를 프로그래밍 방식으로 작성할 수 있으며, 이를 통해 쿼리 작성의 가독성과 유지 보수성을 향상시킬 수 있습니다.

  4. 인덱스 및 성능 최적화: 복잡한 쿼리의 성능을 최적화하려면 데이터베이스 인덱스를 올바르게 생성하고 쿼리 실행 계획을 검토하는 것이 중요합니다. ORM을 사용하더라도 데이터베이스 최적화에 신경을 써야 합니다.

  5. 문서화와 주석: 복잡한 쿼리를 작성한 경우, 코드를 문서화하고 주석을 추가하여 다른 개발자가 이해하고 유지 보수할 수 있도록 도움을 줄 수 있습니다.

  6. ORM을 확장: 필요한 경우, ORM을 확장하여 복잡한 작업을 수행할 수 있는 사용자 지정 함수나 클래스를 추가할 수 있습니다. 이렇게 하면 ORM을 보다 강력하게 만들 수 있습니다.

  7. 프로파일링 및 모니터링: 복잡한 쿼리의 성능 문제를 해결하려면 프로파일링 및 모니터링 도구를 사용하여 어떤 부분에서 성능 문제가 발생하는지를 파악해야 합니다.

마지막으로, 복잡한 쿼리 작성은 개발자의 경험과 데이터베이스 지식이 필요한 작업입니다. 따라서 데이터베이스와 ORM의 작동 원리를 이해하고 최적의 해결책을 찾는 데 시간을 투자하는 것이 중요합니다.

0개의 댓글