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" - 위키백과)

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

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