1 분 소요

ORM (Object Relational Mapping)

 객체 관계형 데이터베이스로 자동으로 매핑해주는 것을 의미한다.
  • 객체간의 관계를 바탕으로 기존에 발생했던 객체 모델과 관계형 모델간의 불일치를 완화시켜주고 해결해준다.
  • DB <-> Mapping <-> Object Field
    • 이와 같은 개념으로 객체를 통해 간접적으로 데이터베이스의 데이터들을 다루는 것을 말한다.

장점

  • Object Relational

    1. 객체 지향적인 코드로 인해서 직관적이면서 로직적으로 구현할 수 있도록 해준다.
    2. 불필요한 코드를 줄일 수 있어서 코드의 가독성 및 생산성이 증가한다.
  • 재사용 및 유지보수

    1. ORM은 독립적으로 작성되기때문에, 객체들을 재사용이 가능하다.
    2. 매핑 정보가 정확해서 ERD(Entity Relationship Diagram)보는 것에 의존성이 낮다.
    3. 디자인 패턴을 견고하게 짤 수 있다.
      • 뷰와 함쳐지는 형태로 컨트롤러를 사용해서 가공된 데이터를 사용한다.
  • 종속성 감소

    1. DBMS(Database Management System)에 대한 종속성이 줄어든다.
      • RDBMS의 데이터 구조가 JAVA의 객체지향 모델 간격을 좁힐 수 있다.
    2. 객체에만 집중하기때문에 DBMS 교체에 필요한 시간과 리스크가 적어진다.
    3. 오버라이드 기능을 사용할 경우, 간결하고 빠른 가공이 가능하다.

단점

  • 어려운 서비스

    1. ORM으로는 설계에 매우 신중해야한다. 복잡도가 높아지면 난이도또한 같이 높아진다.
    2. 로직적으로 구현하지 못할 경우 리스크가 크다. (성능 저하로 이어진다.)
  • 기존 시스템의 한계

    1. 프로시저가 많은 시스템에서 구현할 경우, 기존의 시스템들을 다시 객체화시켜야해서 생산성이 떨어지고 리스크가 크다.

특징

  1. Granularity(세분성)

    경우에 따라 데이터베이스에 있는 테이블보다 많은 클래스를 가진 객체 모델을 지닐 수 있다.

    1. Coarse Granularity

      • PersonDetails Class
    2. Fine Granularity

      • Persion Class, Address Class
  2. Inheritance(상속)

    RDBMS는 OOP(Object Oriented Programming) 객체 지향 프로그래밍으로 자연적 패러다임인 상속과 유사하게 정의되지 않으므로 상속의 개념이 없다.

  3. Identity(일치)

    RDBMS는 하나의 개념을 통해 정의하는 데 이것은 Primary key(기본키)로 정의한다.

  4. Associations(연관성)

    객체지향 언어는 Object Reference(객체 참조)를 사용하는 연관성을 나타내지만, RDBMS는 연관성을 Foreign key(외래키)로 정의한다.

  5. Navigation(탐색 또는 순회)

    RDBMS에서 일반적인 SQL 쿼리 수를 최소화하고 JOIN을 통해 여러 Entity(엔티티)를 로드하고 대상 엔티티를 select(선택)한다.