ORM(Object Relational Mapping, 객체 관계 매핑)

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 프로그래밍 기술

  • 객체 지향 프로그래밍 언어(예: Java, C#, Python 등)에서 사용하여 관계형 데이터베이스 시스템(예: MySQL, PostgreSQL, Oracle, SQL Server 등)과의 상호 작용에 사용

  • ORM 사용 이유

    객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용

    -> 객체 모델과 관계형 모델 간에 불일치 발생

    -> ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결

  • 대표적인 ORM 프레임워크

    • Java: Hibernate
    • C#: Entity Framework
    • Python: Django ORM
    • Ruby: ActiveRecord

장점

  • 객체 지향적인 코드로 인해 직관적이고 비즈니스 로직에 집중할 수 있음
  • 재사용 및 유지보수 편리성 증가
  • DB에 대한 종속성 감소

단점

  • ORM으로만 서비스를 구현하기에 어려움이 있음
  • 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 사용하기 어려움

주요 개념

  1. 객체와 테이블 매핑: ORM은 데이터베이스 테이블과 프로그래밍 언어의 객체 간에 매핑을 제공합니다. 각 테이블은 객체 클래스에 대응하고, 각 열은 클래스의 속성(필드)에 대응합니다. 이런 방식으로 객체와 데이터베이스 간의 변환 작업을 자동화합니다.
  2. SQL 추상화: ORM은 SQL 쿼리 작성을 추상화하고, 데이터베이스 관련 작업을 직접 다루지 않고도 객체를 통해 데이터를 검색, 삽입, 갱신 및 삭제할 수 있게 해줍니다. 이로 인해 개발자는 SQL 문법에 대한 지식이 부족해도 데이터베이스 작업을 수행할 수 있습니다.
  3. 객체 지향 프로그래밍과 편의성: ORM은 객체 지향 프로그래밍과 잘 통합되므로 개발자는 데이터베이스를 객체처럼 다룰 수 있습니다. 이로 인해 코드의 가독성이 향상되며 유지 보수가 쉬워집니다.
  4. 데이터베이스 독립성: ORM은 특정 데이터베이스 시스템에 종속되지 않고 여러 데이터베이스 관리 시스템을 지원할 수 있도록 설계됩니다. 따라서 데이터베이스를 변경하더라도 코드 변경이 최소화됩니다.
  5. 생산성 향상: ORM을 사용하면 반복적인 데이터베이스 작업 및 SQL 쿼리 작성을 피할 수 있으므로 개발 시간을 단축하고 생산성을 향상시킬 수 있습니다.

정리

  • ORM은 객체 지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터 간의 불일치를 해소하여 상호작용을 돕습니다. 이를 통해 코드의 직관성을 확보하고, 재사용 및 유지보수 편리성을 증가시키며 DB에 대한 종속성도 감소시킵니다. 하지만 ORM만으로 모든 서비스를 구현하기에 어려움이 있으며, 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 사용하기에 어려움이 있습니다.

참고

보완/복습

  • 2023.11.01 복습