지금까지 나는 개발을 진행하면서 ORM이 뭔지도 모르고 Prisma 등을 사용하고 있었다. 이와 같이 여러 라이브러리들을 사용할 때, 잘 알아보지 않고 얕은 이해력을 바탕으로 사용하다보니 코드 작성 시 효율성이 떨어지고 적재적소에 적절하게 적용하지 못하고 있다는 것을 깨달았다.
이에 앞서 말한 Prisma나 Sequelize와 같은 ORM 라이브러리가 무엇인지 한번 알아보고자 한다.
ORM(Object Relational Mapping, 객체-관계 매핑)
ORM은 객체 모델과 관계형 모델 간의 불일치를 해소하기 위해 프로그래밍의 객체와 데이터베이스 데이터와의 관계를 연결해주는 것으로 둘 사이의 통역사라고 생각하면 편하다.
즉, 이를 이용하여 SQL문을 작성하지 않고도 객체의 형태로 데이터베이스에 접근하여 데이터의 CRUD를 할 수 있게 된다.
장점
- SQL문이 아닌 객체지향적인 코드를 활용하여 데이터에 대한 조작이 가능해지므로 프로그래밍에 조금 더 집중할 수 있게 된다.
- 이를 통해, 재사용성 및 유지보수성이 향상되며, 가독성도 높아진다.
- 또한, DB에 대한 종속성이 낮아지며 코드 작성에 필요한 시간도 줄일 수 있다.
단점
- SQL문을 작성하지 않아도 되어 편리하지만 ORM만으로 구현하기 힘든 것들이 존재한다.
- ORM을 제대로 활용하지 못할 경우, 속도 저하가 발생하거나 일관성을 지키지 못하는 큰 문제가 발생할 수 있다.
- ORM에만 의존하다보면 기본이 되는 SQL이 뭔지도 모르는 상황이 발생할 수 있으므로 SQL이 무엇인지 정확하게 알고 사용하는 것이 효과적인 개발에 도움이 될 수 있다.