용어 | ORM(Object Relational Mapping)

|

요약

ORM은 MVC(모델 뷰 컨트롤러) 패턴에서
데이터베이스를 가져오는 데의 역할과 관련이 있습니다.

우리가 프레임워크를 사용할 때 쓰는 OOP(객체 지향 프로그래밍)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(관계형 데이터베이스) 에서 쓰이는 테이블 데이터를 자동으로 연결(매핑) 하는 것을 의미합니다.

ORM을 활용하면 객체간의 관계를 바탕으로 SQL문을 자동으로 생성해줍니다. 객체를 통해 간접적으로 데이터베이스를 관리할 수 있게 되는 장점을 가집니다.

장점은?

객체 지향 코드

클래스의 메서드를 활용하여 데이터베이스를 조작할 수 있게 됩니다. 개발자가 객체 모델만 사용해서 프로그래밍을 할 수 있게 되는데요, SQL 구문을 사용할 때와는 다르게 선언문, 할당, 종료 같은 부수적인 코드가 줄어들어 시간적인 효율성과 객체에 대한 접근방법만 고민하면 되는 장점을 가지고 있습니다.

재사용

ORM은 기존 객체에서 독립적으로 작성되고 객체로 만들어져 있기 때문에 재사용할 수 있습니다. 또한 매핑하는 정보가 명확합니다. 이로 인해 ERD를 보는 의존도가 낮아집니다.

DBMS(DataBase Management System) 종속성 하락

객체간의 관계를 바탕으로 SQL 문을 자동으로 생성하고 자료형 타입까지 사용할 수 있어 RDBMS의 데이터 구조와 객체 지향 모델 사이의 간격을 줄일 수 있습니다. 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 적고 시간이 덜듭니다.

단점

설계를 신중하게

프로젝트의 복잡성이 커질 수록 난이도가 올라갑니다. 설계를 잘못 짰을 경우 속도 저하와 일관성이 무너지는 문제가 생깁니다. 또한 일부 자주 사용되는 대형 SQL 구문은 별도의 튜닝이 필요할 수 있어 이 때는 SQL 구문을 사용하는 것이 더 나을 수도 있습니다.

객체 관계 불일치

  • 1. 세분성 : 경우에 따라 DB 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수도 있습니다
  • 2. 상속성 : RDBMS는 객체지향 프로그래밍 언어의 특징인 상속 개념이 없습니다.
  • 3. 일치 : RDBMS는 기본 키를 이용하여 동일성을 정의합니다. 그러나 자바는 객체 식별과 객체 동일성을 모두 정의합니다.
  • 4. 연관성 : 객체 지향 언어는 방향성이 있는 객체의 참조를 사용하여 연관성을 나타내지만 RDBMS는 방향성이 없는 외래 키를 이용해서 나타냅니다.
  • 5. 탐색 : RDBMS는 JOIN을 통해 여러 엔티티를 로드하고 원하는 대상 엔티티를 선택하는 방식으로 탐색합니다.

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다