[others]ORM

EMMA·2022년 4월 2일
0

📶 ORM에 대해 정리해보기



0
what is ORM?

: Object Relational Mapping ("객체지향적으로 데이터를 다루자!")
: 객체지향프로그램은 class 기반이고, 데이터베이스는 table 기반이기 때문에 이 둘을 호환해줄 시스템이 필요함
: 즉, ORM은 객체지향프로그램과 관계형 데이터베이스를 연결해주는 것
-> 객체지향프로그램의 객체를 통해 데이터베이스를 다룰 수 있음

(좀 더 정확히는, "...this creates, in effect, a "virtual object database" that can be used from within the programming language" - 위키백과)

위와 같이 작성하면 SQL에 해당 속성들이 포함된 users 테이블이 생성된다
: Persistent한 특성을 가짐 (원래 프로그램을 종료하면 메모리에서 데이터가 삭제되기 때문에 영구성이 없으나, ORM을 통해서 persistence framework를 구축할 수 있음)

("If this storage and retrieval functionality is implemented, the objects are said to be persistent." -위키백과)

이미지 출처: http://www.incodom.kr/ORM

1
pros

: SQL 쿼리를 사용하지 않고 객체지향프로그래밍으로 바로 데이터베이스를 handling 할 수 있음
: (220405 update) ERD(Entity Reltaionship Diagram)에 대한 의존도도 낮아짐
: Class 별로 코드를 작성하기 때문에 가독성 및 생산성 증가, 재사용 가능
: DBMS에만 한정된 것이 아닌, 다양한 솔루션에도 적용 가능한 방법
: django ORM의 예시를 보려면 여기 클릭
: 공식문서는 여기 클릭

2
cons

: ORM 만으로 SQL을 100% 다룰 수 없음. 결국엔 직접 SQL을 다뤄야 하는 상황 발생.
: 프로젝트의 규모가 커질 경우, 복잡도 상승의 위험성이 존재함. ORM은 아무래도 직접 SQL을 작성하는 것보다 복잡할 수 밖에 없음
: 잘못 구현했거나 크기가 큰 쿼리는 속도가 급속도로 저하되어 별도의 튜닝이 필요할 수 있음
: 생각보다 ORM을 활용하고 있는 회사가 많지 않은 현실적인 문제 존재



참고 자료:
https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping
http://www.incodom.kr/ORM#h_7bcb64714995fc38abb08b5b85b60c14

profile
예비 개발자의 기술 블로그 | explore, explore and explore

0개의 댓글