영상후기 - ORM(Object Relational Mapping)
![movie](https://img.youtube.com/vi/wIp3veR_9Ag/0.jpg)
- ORM이란 개념은 여러 프로그래밍 언어에서 제공한다.
- 객체(object)가 무언가를 알고 있다는 것은 변수(variable)의 도움을 받는 것이고, 객체가 무언가를 수행한다고 했을 때 그것은 메소드(method)의 도움을 받는 것이다.
- 데이터를 저장하기 위해 변수(variable)를 사용한다.
- 데이터를 영구적으로 저장할 수 있는 저장공간을 영구 저장소(persistant storage)라고 한다.
- 객체를 데이터베이스에 저장하기 위해서 SQL 이라는 것이 필요하다.
- SQL(Structured Query Language)를 사용하면, 데이터를 검색하고, 데이터를 저장하고, 데이터(혹은 테이블의 구조)를 변경하는 등.. 데이터베이스에서 가능한 모든 작업을 할 수 있다.
- 데이터를 삽입(insert)하고, 가져오고(select), 변경(update) 하는 모든 작업을 수행하기 위해선 SQL Query가 필요하다.
- 여전히 데이터베이스에서 작업을 수행하기 위해 SQL Query를 사용하지만, 개발자가 직접 SQL Query를 작성할 필요없이 위의 작업들을 가능하게 하는 것이 ORM의 개념이다.
- 이러한 도구를 ORM Tool 이라고 한다.
- 객체 지향 언어라면 어떤 것이든 ORM tool이 어플리케이션과 데이터베이스 사이에 존재하고, 데이터에 대한 작업을 중재한다.
- 프로그램의 클래스 이름은 데이터베이스의 테이블 이름이고, 클래스 필드의 변수들은 테이블의 컬럼이 된다.
- 각각의 인스턴스들은 테이블에서 하나의 행이 된다.
- 객체 지향 개념을 데이터베이스의 개념과 연결한 것이 Object Relational Mapping 이다.
- 개발자는 ORM Tool 에게 데이터베이스에서의 객체에 대한 작업을 부탁하면, ORM Tool은 알아서 적절한 SQL Query를 생성하여 객체 데이터를 데이터베이스에 저장할 수 있게 해준다.
- 툴 명령 -> Query 명령
- save -> insert(or update), get -> select, delete -> delete
- 장점만 있을 것 같지만, 단점도 있다.
- 프로젝트가 복잡해질 수록 쿼리문도 복잡해진다.
- ORM Tool을 사용한 개발은 빠를 수 있지만, 프로그램의 실행 속도가 빠르다는 것은 아니다.
- ORM Tool을 사용할 때마다, 쿼리를 작성하는 추가적인 시간이 필요하기 때문이다.
- 쿼리를 직접 작성하는 것이 성능면에서 더 빠른 것이 사실이다.
- 이 분야의 전문가라면 어떤 특정 쿼리를 작성할 때, 빠르게 동작하는 쿼리를 잘 알고 그렇게 사용하지만, ORM Tool은 그들만의 고유한 쿼리 작성 방법이 있고, 최적화 되어있지 않을 수 있다.
- 그렇다고 이것이 ORM Tool을 사용하지 말아야 한다는 것은 아니다.
- 사람이 직접 작성한 쿼리문에는 실수가 발생할 수 있기 때문에 제품을 빠르고, 적은 버그로 빌드하기 위해서 ORM Tool을 사용하는 것은 여전히 좋은 선택이다.