[DB] ORM이란

Jaehyeong Kwon·2022년 5월 2일
0

ORM이란?

ORM(Object Relational Mapping, 객체 관계 매핑)을 설명하자면 다음과 같다. OOP(object Oriented Programming)에서 쓰이는 개체를 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블을 자동으로 연결하는 것을 말한다.

클래스와 테이블은 처음부터 호환 가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하게 된다. 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다. ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 데이터베이스 조작이 가능하다.


ORM의 장단점


장점


완벽한 객체 지향적인 코드

ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어 ,개발자가 객체 모델만 이용하여 프로그래밍을 하는 데 집중할 수 있게 한다. SQL 문을 사용하면 부수적으로 선언문, 할당, 종료와 같은 코드를 작성해야하는 데 이러한 코드를 줄여 가독성을 높일 수 있다.

재사용, 유지 보수, 리팩토링 용이성

ORM은 기존 객체와 독립적으로 작성되어 있고, 객체로 작성되어 있어 재활용할 수 있다. 매핑하는 정보가 정확하기 때문에 ERD를 보는 의존도를 낮출 수 있다.

DBMS(DataBase Management System) 종속성 하락

객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하고, 객체의 자료형 타입까지 사용할 수 있어 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있다. 객체에만 집중할 수 있어 DBMS를 교체하는 큰 작업에도 리스크와 시간을 단축시킬 수 있다.


단점


모든 것을 해결해 줄 수 없다.

ORM을 사용하면 편리성을 올려주지만 그만큼 신중하게 설계해야한다. 프로젝트의 복잡성이 커질 수록 난이도가 올라가고 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있다.

객체-관계 간의 불일치

  • 세분성(Granularity)

    경우에 따라서 데이터베이스에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있다.

  • 상속성(Inheritance)

    RDBMS는 객체지향 프로그래밍 언어의 상속 개념이 없다.

  • 일치(Identity)

    RDBMS는 기본키(primary key)를 이용하여 동일성을 정의한다. 자바는 객체 식별과 객체 동일성을 모두 정의한다.

  • 연관성(Associations)

    객체 지향 언어는 방향성이 있는 객체의 참조(reference)를 사용하여 연관성을 나타내지만 RDBMS는 방향성이 없는 외래키 (foreign key)를 이용해서 나타낸다.

profile
나무와 같이 성장하는 사람

0개의 댓글