ORM이란 Object Relational Mapping(객체 관계 매핑)의 약자이다. 우리가 사용하는 객체 지향 프로그래밍에선 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델간에 불일치가 생긴다. 이 문제를 ORM을 이용하여 해결하고 우린 객체를 통해 간접적으로 데이터 베이스의 데이터를 다룰 수 있게 된다.
장점으로는 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와주며, 그리고 ORM은 객체에 매핑하기 때문에 독립적으로 작성되어있고, 해당 객체들을 다시 가져다가 사용할 수 있다. 그리고 DBMS에 대한 종속성이 줄어든다. 이는 자동으로 SQL문을 생성하고 대부분의 ORM 솔루션은 DB에 종속적이지 않아 서비스가 커져서 DBMS를 교체하는 큰 작업에도 비교적 적은 시간과 위험을 주게 된다.
당연하지만 장점만 있지는 않다. 단점으로는 ORM만으로 서비스를 만들긴 힘들다는 것이다. 복잡성이 커질 경우 난이도가 올라감은 물론이고 잘못 구현된 경우 일관성이 깨지거나 속도가 매우 느려질 수 있기에 설계에 신경을 많이 써야합니다. 그리고 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다라고 하는데 이건 사실 아직 잘 이해가 되지 않지만 ORM이 매핑을 시켜준다고 해도 프로시저가 많을 수록 클래스와 테이블이라는 불일치를 커버하기 힘들어서 그 사이에서 문제가 생기는 게 아닐까 생각된다.
그럼 난 왜 시퀄라이즈를 사용하냐 하면은 가장 먼저 들은 강의에서 알려준게 이거고 지금 내가 아는 게 이거 뿐이라서 라는 이유겠지만 그럼 장단점이라도 알고 써야지.
시퀄라이즈의 장점은 여러 관계형 DB를 지원하며, 트랜잭션, 관계 모델링, 여러 데이터 유효성 검사 시스템 등 다양한 기능을 제공한다. 그리고 프로미스 기반이기에 JS의 비동기적 특성과 일치한다. 대신 기능이 너무 많고 공식 문서가 아직은 불친절한 부분이 많아 학습에 힘들 수 있으며, 자동으로 생성되는 SQL을 통해 디버깅 시에 너무 긴 SQL문으로 인해 가독성이 떨어지는 부분도 있다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.07.29 RDBMS의 정규화 (0) | 2023.08.01 |
---|---|
23.07.28 MVC 패턴 (0) | 2023.07.31 |
23.07.26 자료구조 큐(Queue) 구현 (0) | 2023.07.27 |
23.07.25 스택(Stack) 구현하기 (0) | 2023.07.26 |
23.07.23 트랜젝션 (Transaction) (0) | 2023.07.24 |