[Spring] ORM(Object Relational Mapping)이란?

WOOK JONG KIM·2022년 10월 26일
0
post-thumbnail
post-custom-banner

ORM이란

객체 관계 매핑

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

이러한 객체(클래스)는 데이터베이스 테이블과 매핑하기 위해 만들어 진것이 아니기에 RDB 테이블과 어쩔 수 없는 패러다임 불일치 존재

ORM은 이 둘의 불일치 제약사항을 해결하는 역할

이러한 ORM을 이용하면 쿼리문 작성이 아닌 코드(메서드)로 데이터를 조작 가능

ORM 장점

ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작 할 수 있다
-> 쿼리문을 작성하는 양이 현저히 줄어 개발 비용이 줄어듬
-> 객체지향적으로 DB에 접근할 수 있어 가독성 올라감

재사용 및 유지 보수 편리
-> ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어 있어 재사용 용이
-> 객체들은 각 클래스로 나뉘어 있어 유지보수 수월

DB에 대한 종속성이 줄어 듬
-> ORM을 통해 자동 생성된 SQL문은 객체를 기반으로 DB table을 관리하기에 DB에 종속적이지 않음
-> DB 교체시에도 비교적 적은 리스크

ORM 단점

온전한 서비스를 구현하기에는 한계가 있음
-> 복잡한 서비스의 경우 직접 쿼리를 구현하지 않고 코드로 하기 힘듬
-> 복잡한 쿼리를 정확한 설계 없이 CRM만으로 구성하게 되면 성능 저하

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

객체와 관계 관점 불일치

  1. 세분성 : ORM의 자동설계 방법에 따라 데이터베이스 있는 테이블 수와 애플리케이션의 엔티티 클래스의 수가 다른 경우 생김(클래스가 테이블 수보다 많아질 수 있음)

  2. 상속성 : RDBMS에는 상속이라는 개념 X

  3. 식별성 : RDBMS는 기본키로 동일성을 정의하는 반면 자바는 두 객체의 값이 같아도 다르다고 판단할 수 있다

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

  5. 탐색 : 자바에서는 특정 값에 접근하기 위해 객체 참조와 같은 연결 수단 활용. 이 방식은 객체를 연결하고 또 연결해서 접근하는 그래프 형태의 접근 방식
    ex) 어떤 멤버의 회사 주소를 구하기 위해 member.getOrganization().getAddress()와 같이 접근
    반면 RDMBS에서는 쿼리를 최소화하고 JOIN을 통해 여러 테이블을 로드하고 값을 추출하는 접근 방식 채택

profile
Journey for Backend Developer
post-custom-banner

0개의 댓글