Back-end.DB

[DB]ORM

whitedeveloper 2023. 1. 15. 02:00

#.ORM

-Object Relational Mapping, 객체 관계 매핑

-자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(Relational DataBase)의 테이블을 자동으로 매핑하는 방법

 

-클래스는 DB의 테이블과 매핑하기 위해 만들어진 것이 아니기 때문에 RDB테이블과 불일치가 존재, ORM은 이를 해결하는 역할

-ORM을 이용하면 쿼리문 작성이 아닌 코드(메서드)로 데이터를 조작할 수 있다.

#.ORM 장점

1.데이터베이스 쿼리를 객체지향적으로 조작할 수 있다.

    -쿼리문 작성량이 줄어 개발 비용이 줄어듦

    -객체지향적으로 DB에 접근할 수 있어 가독성이 높아진다.

 

2.재사용 및 유지보수가 편리

    -ORM을 통해 매핑된 객체는 독립적으로 작성되어 있어 재사용이 용이

    -객체들은 각 클래스로 나뉘어 있어 유지보수가 수월

 

3.데이터베이스에 대한 종속성이 줄어든다.

    -ORM을 통해 자동 생선된 SQL문은 객체를 기반으로 데이터베이스 테이블을 관리하기 때문에 데이터베이스에 종속적       이지않다.

    -데이터베이스를 교체하는 상황에서도 비교적 적은 리스크를 부담

 

#.ORM 단점

1.ORM만으로 온전한 서비스를 구현하기에는 한계가 존재

    -복잡한 서비스의 경우 직접 쿼리를 구현하지 않고 구현하기 어렵다.

    -복잡한 쿼리를 정확한 설계 없이 ORM만으로 구성하게 되면 속도 저하 등의 성능 문제가 발생할 수 있다.

 

2.어플리케이션의 객체 관점과 데이터베이스의 관계 관점의 불일치가 발생

    -세분성(Granularity) : 데이터베이스에 있는 테이블 수와 애플리케이션 엔티티 클래스의 수가 다른 경우가 생긴다.

                                       (클래스가 테이블 수보다 많아질 수도 있다.)

    -상속성(Inheritance) : RDBMS에는 상속이라는 개념이 없다.

    -식별성(Identity) : RDBMS는 기본키로 동일성을 정의, 하지만 자바는 두 객체의 값이 값아도 다르다고 판단할 수 있다.                                   (식별과 동일성의 문제)

    -연관성(Associations) : 객체지향 언어는 객체를 참조함으로써 연관성을 나타내지만 RDBMS에서는 외래키를 삽입함으                                            로써 연관성을 표현, 또한 객체지향 언어에서 객체를 참조할 때는 방향성이 존재하지만                                                        RDBMS에서 외래키를 삽입하는 것은 양방향의 관계를 가지기 때문에 방향성이 없다.

     -탐색(Navigation) : 자바에서는 특정 값에 접근하기 위해 객체 참조 같은 연결 수단을 활용, RDBMS에서는 쿼리를 최소                                      화하고 조인을 통해 여러 테이블을 로드하고 값을 추출하는 접근 방식을 채택