ORM의 장단점

  23 Oct 2019


ORM의 장단점


ORM이란?

ORM이란 Object Relational Mapper으로 객체지향적 프로그래밍 언어와 데이터베이스 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.

ORM을 사용하면, 관계형 데이터베이스를 관리하면서 객체 지향 원칙을 활용할 수 있도록 도와주며, 효과적인 쿼리를 빠르게 기술할 수 있다. ORM 라이브러리/프레임워크가 모든 기능을 데이터베이스 스키마 및 쿼리로 변환하면서 객체를 설정하여 객체를 관리할 수 있습니다.

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는데, 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용한다. 객체 모델과 관계형 모델간의 불일치가 존재하는데, ORM을 통해 이를 해결할 수있다. (Django는 Django ORM을 기반으로 지원한다)

영속성-Persistence

데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에, 프로그램을 종료하면 모두 잃어버리게 된다.

Object Persistence - 영구적인 객체
  • 메로리 상의 데이터를 파일 시스템, 관계형 데이터베이스(RDB), 객체 데이터베이스(ODB) 등을 활용하여 영구적으로 저장하여 영속성을 부여한다.
    Persistence Layer

    프로그램의 아키텍처에서, 데이터의 영속성을 부여해주는 계층이다. JDBC를 이용하여 직접 구현할 수 있지만, Persistence Framework를 이용한 개발이 많이 이루어진다.

장점

  • 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있다.
    • ORM을 이용하면, SQL Query가 아니라 직관적인 코드(메소드)로 데이터를 조작할 수 있어 개발자가 객체 모델로 프로그래밍하는데 집중할 수 있다.
    • 선언문, 할당, 종료같은 부수적인 코드가 줄어든다.
    • 각 객체에 대한 코드를 별도로 작성하기 때문에, 코드의 가독성을 올려준다.
  • 반복적인 SQL 코드가 필요하지 않아서 신속한 개발이 가능하다.
  • 개발 비용을 절감한다.
  • 업체별 SQL의 차이점을 극복한다. ORM은 업체별 SQL 작성법을 알고있으므로 필요하지 않다.

단점

  • 모든것을 ORM으로만 구현하기는 어렵다.
  • 프로젝트의 복잡성이 크면, 구현하는 난이도가 상승한다. 잘못 구현한 경우 성능이 저하된다.
  • 프로시저가 많은 곳은 ORM의 장점을 활용하기 어렵다. (이미 프로시저가 많은 시스템에선 다시 객체로 바꿔야하며, 그 과정에서 생산성 저하나 리스크가 발생할 수 있다.)
...