ORM(Object Relational Mapping)

JongGwon Seon·2021년 1월 17일

ORM(Object Relational Mapping)이란?

ORM(Object Relational Mapping)이란 OOP(CLASS)와 RDB(Relational DataBase)에서 쓰이는 Talbe과의 설정을 의미함. 둘 사이를 자동으로 Mapping(연결)하는 것을 의미한다. 이 둘은 서로를 위해 만들어진 것이 아니기 때문에 불일치가 발생한다. 이 때, ORM을 통해 SQL 문을 자동으로 생성하여 그 불일치를 해결한다. ORM을 이용하면 따로 SQL문을 작성할 필요 없이 객체를 통해 데이터베이스를 조작할 수 있게 된다.

장점

  1. 완벽한 객체 지향적 코드를 짤 수 있게 되고 그로 인해 생산성이 증대된다.
    • CRUD을 위한 긴 SQL 문장을 작성할 필요가 없다. (여전히 쿼리작성은 필요하지만)
    • 각 객체(Model)별로 코드를 작성하여 가독성을 높여 준다.
    • SQL의 절차적 접근이 아닌 객체적인 접근으로 생산성을 높여 준다.
  2. 재사용, 유지보수, 리팩토링이 용이하다.
    • ORM은 독립적으로 작성이 되어 있고 해당 객체들은 재사용이 가능 하다.
  3. DBMS(DataBase Management System)에 종속성이 하락한다. 고로 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 줄고 시간도 준다.

단점

  1. ORM이 모든 것을 해결해 줄 수는 없다.
    • 사용하기에는 편하지만 설계에는 매우 신중해야 한다.
    • 프로젝트의 복잡성이 높아질 경우 난이도 또한 올라갈 수 있다.
    • 잘못 구현된 경우 속도 저하 및 심한 경우 일관성이 무너지는 문제점이 생길 수 있다.

객체-관계 간의 불일치는 다음과 같은 이유로 일어난다.

1. 세분성(Granularity)

Table보다 Class의 갯수가 많은 경우가 있다.

2. 상속성(Inheritance)

RDBMS는 상속성이 존재하지 않는다.

3. 일치(Identity)

RDBMS는 Primary Key를 통해 동일성을 정의하지만 다른 언어들은 연산자나 동일성 검사를 통해 동일성을 정의한다.

4. 연관성(Associations)

객체는 객체의 참조(reference)를 통해 서로의 연관성을 확인하고 RDBMS는 Foriegn Key를 통해 연관성을 정의한다.

5. 탐색(Navigation)

객체는 그래프형태로 탐색하지만 RDBMS는 JOIN을 통해 탐색을 한다.

profile
안녕하세요 초심자입니다!

0개의 댓글