본문 바로가기

CS 전공지식

24.01.31 ORM

1. ORM (Object relatinal mapping)

    - 객체(클래스) 와 관계(관계형 DB) 와의 설정을 의미

    - 객체 지향 프로그래밍은 클래스를 사용하고 관계형 DB 는 테이블을 사용

    - 객체 모델과 관계형 모델간에 불일치가 존재하는데 이 객체간의 관계를 바탕으로 SQL 을 자동 생성하여

       불일치를 해결함

    - Object <= 매핑 => DB 데이터 에서 매핑의 역할을 하는 것

 

2. 장점

     (1) 객체 지향적 코드로 인해 더 직관적이고 비즈니스 로직에 집중할 수 있도록 도와줌

           - CRUD 를 위한 긴 SQL 문장을 작성할 필요가 없다

           - 각 객체(Model) 별로 코드를 작성해 가독성을 높여 줌

           - SQL 의 절차적 접근이 아닌 객체적인 접근으로 생산성을 높임

 

     (2) 재사용 및 유지보수의 편리성 증가

           - 매핑 정보가 명확해 ERD 를 보는 것에 대한 의존도를 낮출 수 있다

           - ORM 은 독립적으로 작성이 되어 있고 해당 객체들은 재사용 가능

 

     (3) DBMS 에 대한 종속성이 줄어듬

           - 대부분의 ORM 은 DB 에 종속적이지 않다

           - 개발자는 Object 에 집중함으로 DBMS 를 교체하는 극단적인 작업에도 비교적 적은 리스크와 시간이 소요됨

           - 종속적이지 않다는 것은 구현 방법 뿐만 아니라 많은 솔루션에서 자료형 타입까지 유효

           * 종속성 : 프로그램 구조가 데이터 구조에 영향을 받는 것을 의미

 

3. 단점

     (1) 완벽한 ORM 만으로는 구현하기 어려움

           - 사용하기에는 편하지만 설계에는 매우 신중해야함

           - 프로젝트의 복잡성이 높아질 경우 난이도 또한 올라갈 수 있다

           - 잘못 구현된 경우 속도 저하 및 심한 경우 일관성이 무너지는 문제점이 생길 수 있다

 

     (2) 프로시저가 많은 시스템에서는 ORM 의 객체 지향적인 장점을 활용하기 어렵다

           - 이미 프로시저가 많은 시스템에서는 다시 객체로 바꿔야하며, 그 과정에서 생산성 저하 또는

             리스크가 발생할 수 있다

           * 프로시저 : 특정 작업을 위한 프로그램의 일부. 함수와 같은 의미