ORM이란 무엇일까?

권태형·2023년 2월 25일
0

지식정리

목록 보기
6/72
post-thumbnail

우리가 흔히 사용하는 TypeORM, prisma, sequelize 등을 ORM이라고 부른다. ORM이라고 부르고 라이브러리를 설치해서 사용하게 되는데 이 ORM이라는게 무엇이고, 어떠한 장단점이 있는지 알아보자

ORM이란?

ORM(Object-relatinal mapping)이란 객체(클래스)와 관계(관계형 데이터 베이스)와의 설정으로, 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용한다. 여기서 객체 모델과 관계형 모델간에 불일치가 존재 하는데 이 객체간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결 하는 것(Object와 DB의 관계를 매핑), 즉 우리가 만든 "객체"에 맞춰 SQL을 자동 생성해 데이터와 "동기화"시키는 일을 하는 것이 ORM이다.

"객체간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결 하는 것" 또는 "불일치를 해결 하기 위해 사용하는 툴"이라고 볼 수 있다.

ORM사용시 장점

  1. 객체 지향적 코드로 인해 더 직관적이고 비즈니스 로직에 집중할 수 있도록 도와준다.
    -CRUD을 위한 긴 SQL 문장을 작성할 필요가 없다.
    -각 객체(Model)별로 코드를 작성하여 가독성을 높여준다
    -SQL의 절차적 접근이 아닌 객체적 접근으로 생산성을 높여준다

  2. 재사용 및 유지보수의 편리성이 증가한다.
    -매핑 정보가 명확하며 ERD를 보는 것에 대한 의존도를 낮출 수 있다.
    -ORM은 독립적으로 작성이 되어 있고 해당 객체들은 재사용이 가능하다.

  3. DBMS에 대한 종속성이 줄어든다. (*종속성: 프로그램 구조가 데이터 구조에 영향을 받음)
    -개발자는 Object에 집중함으로 DBMS를 교체하는 극단적인 작업에도 비교적 적은 리스크와 시간이 소요된다.

ORM사용시 단점

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

  2. 프로시저가 많은 시스템에서는 QRM의 객체 지향적인 장점을 활용하기 어렵다.
    -이미 프로시저가 많은 시스템에서는 다시 객체로 바꿔야 하며, 그 과정에서 생산성 저하 또는 리스크가 발생할 수 있다.

정리

ORM을 사용한다고 하여 반드시 ORM에서 제공하는 코드만 사용할 필요는 없다. 일부 ORM에서는 SQL문을 작성하기 위한 query문을 쓸 수 있도록 메소드를 제공한다. (ex : sequelize.query()) 상황에 맞게 ORM에서 제공하는 메소드도 사용하고, 단점 보안을 ORM만으로 위한 구현하기 SQL문은 직접 작성하여 복합적으로 사용하는 것이 더 좋을 것이다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글