ORM

이윤근·2021년 8월 1일
0

ORM(Object Relational Mapping)

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

1)사용하는 이유

객체 지향 프로그래밍은 class를 사용하고,관계형 데이터베이스는 테이블을 사용하기때문에 모델간에 불일치가 발생한다. 이것을 해결하기위해 ORM을 사용한다.
ORM을 사용하여 SQL문을 직접 작성하지 않고 엔티티를 객체로 표현한다.

2)장점

1.객체 지향적인 코드로 인해 더 직관적이고 비지니스 로직에 더 집중할 수 있다.
-개발자의 객체 모델로 프로그래밍하는데 집중할 수 있도록 도와준다
-선언문 할당 등 부수적인 코드가 없거나 줄어듬
2.재사용 및 유지보수의 편리성이 증가
-독립적으로 작성되어있고 해당 객체들을 재활용 할 수 있다
3.DBMS에 대한 종속성이 줄어든다.
-객체 간의 관계를 바탕으로 SQL을 자동으로 생성하기 떄문에 RDBMS의 데이터 구조와 객체지향 모델사이의 간격을 좁힐 수 있다.

3)단점

1.완변한 ORM으로만 서비스를 구현하기는 어렵다
-사용하기는 편하지만 설계는 신중히.. 프로젝트의 난이도가 올라갈 수 있음.
2.프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다.

4)Object-relational impedance mismatch(객체-관계 간의 불일치)

1.세분성(Granularity)

경우에 따라서 데이터베이스에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있다.
예를 들어, 어떤 사용자의 세부 사항에 대해 데이터를 저장한다고 한다면 객체지향 프로그래밍에서는 코드 재사용과 유지보수를 위해 Person과 Address라는 두 개의 클래스로 나눠서 관리할 수 있다. 그러나, 데이터베이스에는 person이라는 하나의 테이블에 사용자의 세부사항을 모두 저장할 수 있다. 이 상황에서 Object는 2개, Table는 1개가 되어 개수가 달라지는 것이다.

2.상속성(Inheritance)

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

3.일치(Identity)

RDBMS는 'sameness'라는 하나의 개념을 정확히 정의하는데, 바로 기본키(Primary Key)를 이용하여 동일성을 정의한다. 그러나 자바는 객체 식별(a == b)과 객체 동일성(a.equals(b))을 모두 정의한다.
즉, RDBMS에서는 PK가 같으면 서로 동일한 record로 정의하지만, Java에서는 주소값이 같거나 내용이 같은 경우를 구분해서 정의한다.

4.연관성(Associations)

객체지향 언어는 객체 참조(Reference)를 사용하는 연관성을 나타내는 반면, RDBMS는 연관성을 ‘외래키(Foreign Key)’로 나타낸다.

5.탐색(Navigation)

프로그래밍언어와 RDMBS에서 객체를 접근하는 방법이 다르다

5)sequelize

-javascript 기준
-promise-based Node.js ORM
-지원 RDBMS : Postgres,MySQL,MariaDB,SQlite,Microsoft SQL Server
-SQL문을 작성하지 않아도 ORM만으로도 database를 사용할 수 있다.

*참고자료
https://sequelize.org/master/

profile
성실한코딩러

0개의 댓글