ORM이 무엇인지 알아보자

dion·2020년 3월 4일
1

패러다임

목록 보기
1/1

ORM이란?

참고

Object Relational Model

OOPRDB를 연결할 계층의 역할로 제시된 패러다임입니다.

RDBModelOOPEntity형태로 투영시키는 방식을 사용합니다.

이는 시스템에 따라, 사용하는 DB 및 DB Connector에 따라 달라질 수 있는 데이터 매핑 구조를 객체지향 형태로 통일시켜, SQL 구조의 DB를 OOP구조의 형태로 매핑시키려는 패러다임입니다.

이러한 ORM을 구현하는 대표적인 프레임워크로는 Hibernate가 있습니다.

이를 Java 표준으로 정의한 것이 JPA입니다.

ORM의 단점

  1. 세밀함의 불일치(각 RDBMS가 제공하는 데이터 타입은 Vendor마다 다름)
  2. 하위 타입 문제(RDB에는 상속의 개념이 없기 때문)
  3. 동일성 문제(Java의 경우는 Equals로 비교하지만, RDB는 PK를 기준으로 함.)
  4. 연관 관계(연관의 방향성을 지정해주어야 함. RDB는 방향성이 없음.)
  5. 데이터 검색(RDB는 한 번에 많이 가져올지(메모리), 빈번하게 데이터를 가져올지(성능)를 결정해야 함.)
  6. 개발자에게 높은 RDB 지식을 요구함.(객체구조 설계시에도 DB Scheme을 고려해야 함.)

하지만 전 세계적으로 Data를 다루는 기술의 하나로 각광받는다고 합니다.

ORM의 역할

참고

OOPRDB의 정보 처리 방식이 전혀 다르기 때문에, 둘 사이의 통역기 역할을 해줍니다.

이로 인한 장점은, 프로그램 개발시 OOP적으로 RDB를 다룰 수 있기 때문에 Data를 다루는 부분에서의 생산성이 올라간다고 합니다..

개발자가 OOP에 집중할 수 있게 됨으로써 생산성을 높이겠다는 것이죠.

실제 사용해 본 경험으로는 RDB 지식과 시행착오를 거치고 사용한다면, 좀 더 멋진 코드를 만들어 낼 수 있다는 의견에 동의합니다.

profile
코드리뷰와 고양이를 좋아하는 개발자입니다. 좋은 글을 위한 비판은 언제든 환영합니다.

2개의 댓글

comment-user-thumbnail
2020년 3월 7일

Django로 간단하게 서버 만든적이 있었는데 쿼리문 짜는 거에 익숙하다보니까 오히려 ORM이 더 어렵고 낯설더라구요 ㅠㅠ ㅠ 하지만 디온 말대로 시행착오 거치고 나면 좀 쓸만한것 같아요...ㅎㅎㅎㅎㅎ

1개의 답글