ORM은 무엇인가요?

0

W.I.L(Weekly I Leaned)

목록 보기
6/8

ORM이란?

Object Relational Mapping(객체-관계 매핑)의 줄임말이다. 우리가 OPP(Object Oriented Programming)에서 쓰이는 '객체'라는 개념을 구현한 Class와 RDB(Ralational DataBase)에서 쓰이는 데이터인 테이블을 자동으로 매핑(연결)하는 것을 의미한다. 하지만 클래스와 테이블은 처음부터 호환 가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생한다. 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성해 불일치를 해결한다. 따라서 ORM을 이용하면 따로 SQL문을 짤 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.

ORM의 장단점

장점

  1. 완벽한 객체지향적인 코드
  • ORM을 이용하면 개발자가 객체 모델만 이용해서 프로그래밍을 하는 데 집중할 수 있게 된다. SQL 문을 사용하면서 같이 필요한 선언문, 할당, 종료 같은 부수적인 코드가 사라지거나 줄어들며, 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다.
  1. 재사용, 유지보수, 리팩토링의 용이성
  • ORM은 기존 객체와 독립적으로 작성되어 있고, 객체로 작성되었기 때문에 재활용 할 수 있다. 또한, 매핑하는 정보가 명확하기 때문에 ERD를 보는 의존도를 낮출 수 있다.
  1. DBMS(Database Management System) 종속성 하락
  • 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에서 리스크가 적고 드는 시간이 줄어든다.

단점

  1. ORM이 모든 걸 해결해주진 않음
  • 프로젝트의 복잡성이 커질 수록 난이도가 올라가고, 부족한 설계로 인해 잘못 구현되었을 경우에는 속도 저하 및 일관성을 무너뜨릴 수 있다. 또한, 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있다.
  1. 객체-관계 간의 불일치 - 아래와 같은 특성에서 객체-관계 간의 불일치가 생긴다.
  • 세분성 : 경우에 따라서 데이터베이스에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있다.
  • 상속성 : RDBMS는 객체지향 프로그래밍 언어의 특징인 상속 개념이 없다.
  • 일치 : RDBMS는 기본키(primary key)를 이용하여 동일성을 정의한다.
  • 연관성 : 객체지향 언어는 방향성이 있는 객체의 참조(reference)를 사용하여 연관성을 나타내지만, RDBMS는 방향성이 없는 외래키(foreign key)를 이용해서 나타낸다.
  • 탐색 : 자바를 예로 들면, 자바는 그래프 형태로 하나의 연결에서 다른 연결로 이동하며 탐색하지만, RDBMS에서는 일반적으로 SQL문을 최소화하고 JOIN을 통해 여러 엔티티를 로드하고 원하는 대상 엔티티를 선택하는 방식으로 탐색한다.

참고 사이트
https://geonlee.tistory.com/207

profile
우주와 같은 프로그래밍 세상

0개의 댓글

관련 채용 정보