지난 두번의 프로젝트에서는 SQL-query의 학습 목적으로 ORM의 기능을 사용하지 않고 raw-query를 사용하며 디비 풀링만의 목적으로 typeORM을 사용했었다. 그래서 새롭게 시작한 프로젝트에서는 typeORM보다 좀 더 대중적인 Sequelize를 사용하고 ORM의 기능을 활용해보고자 한다. 그전에 ORM이 뭔지 이해하고 넘어가자.
대부분의 객체 지향 언어에서 개발을 할때 객체를 RDB에 저장하고 관리하는 상황에서 SQL 중심적으로 개발을 하게 된다면 매번 기능을 추가할 때 마다 개발 언어에서의 객체를 SQL 쿼리문으로.. SQL을 받은 데이터를 객체로 변경하는 과정을 반복해야 한다.
ORM은 객체와 RDB 두 기둥위에 있는 기술이다. 객체와 RDB를 매핑하여 비즈니스 로직에 집중하여 코드를 짤 수 있게 해주고, 다양한 기능을 통해 SQL 쿼리문을 문법 실수나 버그 없이 동작할 수 있게 해준다. 특정 RDBMS에 종속되지 않고 다양한 DB에 유연하게 연결이 가능해 재사용 및 유지보수의 편리성도 가지고 있다. 하지만 ORM은 SQL Query를 직접 사용할 때 보다 성능 저하 이슈가 발생할 수 있고 일부 쿼리는 구현할 수 없을 때도 있다.
실무에서는 장애의 대부분은 DB에서 발생하기 때문에 ORM 사용에 있어서 초기 설계에 각별히 신경을 써야되며 상황에 따라 SQL Query를 사용하는 것을 고려해봐야한다. 그리고 객체 지향과 RDB에 대해 전문적인 지식을 가지고 ORM을 사용해야 한다.
참조 :
https://yceffort.kr/2021/07/dont-use-nodjs-orm
https://gmlwjd9405.github.io/2019/02/01/orm.html
https://www.youtube.com/watch?v=_tMJPysViNU