ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Database ] ORM (Object-Relation Mapping )
    공부 !/Computer Science 2022. 4. 25. 23:37
    반응형

    ORM


    ORM 이란 Object Relational Mapping 객제 - 관계 매핑을 의미한다

    객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다

     

    객체지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용한다

    객체 모델과 관계형 모델간의 불일치가 존재하게 되는데

    ORM 을 통해 객체 간 관계를 바탕으로 SQL 를 자동 생성하여 불일치를 해결한다 !


    ORM 장단점

    장점

    • 객체지향적인 코드로 직관적이고 비즈니스 로직에 집중이 가능하다
    • 재사용 및 유지보수의 편리성이 증가한다
    • DBMS 에 대한 종속성이 감소한다

    단점

    • 잘못 구현되는 경우 속도 저하 및 일관성이 무너진다 
    • 프로젝트의 복잡성이 높을수록 구현이 어렵다
    • DBMS 의 고유 기능을 이용하기 어렵다 ( 반대로 DBMS 고유 기능을 사용하면 이식성이 저하된다 )

    객체 - 관계 간의 불일치

    다음과 같은 특성에서는 객체-관계 간의 불일치가 발생한다

     

    세분성 ( Granularity )

    경우에 따라서 데이터베이스에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있다

    상속성 ( Inheritance )

    RDBMS 는 객체 지향 프로그래밍 언어의 특징인 상속 개념이 없다

    일치 ( Identity )

    RDBMS 는 기본키를 이용하여 동일성을 정의한다

    하지만 자바는 객체 식별 (a == b)과 객체 동일성 (a.equals(b))을 모두 정의한다

    연관성 ( Associations )

    객체지향 언어는 방향성이 있는 객체의 참조(reference)를 사용하여 연관성을 나타내지만

    RDBMS는 방향성이 없는 외래키(foreign key)를 이용해서 나타낸다

    탐색 ( Navigation )

    자바와 RDBMS 는 객체를 접근하는 방법이 다르다

    자바는 그래프 형태로 하나의 연결에서 다른 연결로 이동하며 탐색하지만

    RDBMS는 JOIN을 통해 원하는 대상 엔티티를 선택하는 방식으로 탐색한다


    ORM 프레임워크

    • JPA(Java Persistence API)
    • Sequelize
    • Django ORM
    반응형

    댓글

Designed by SooJI