<aside>
⏳ 2022년 7월 15일
</aside>
데이터베이스는 SQL과 NOSQL두가지가 존재한다, 관계형 데이터베이스인 SQL은 마치 엑셀의 표처럼 생긴 데이터베이스이고 NOSQL은 마치 서류봉투에 문서를 담아 놓은 것같은 데이터베이스이다. 이러한 데이터 베이스에서 역할을 사용하기 위해서는 외워야할 명령어들이 엄청 많은데,,이걸 어떻게 언제 다 외울수 있는지,, 따라서 이러한 불편한을 없애기 위해서 데이터베이스 명령어를 자동으로 만들어주는 모델이다. 그럼 SQL에서 사용하는 typeORM에 대해 공부해 보겠다.
“TypeORM”
- ORM = Object Relational Mapping(or Mapper or Model)
- 객체와 관계형 데이터베이스(SQL)의 데이터를 자동으로 연결해 주는 것을 이야기 합니다.
- 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용하여서 객체 모델과 관계형 모델 간에 불일치가 존재하기 때문에 ORM을 통해서 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
- 장점
- 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
- 재사용 및 유지보수의 편리성이 증가한다.
- DBMS에 대한 종속성이 줄어든다.
- 단점
- 완벽한 ORM으로만 서비스를 구현하기는 어렵다. 사용하기는 편리하지만 설계를 매우 신중하게 해야한다.
- 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다.
- TypeORM
- NodeJS 를 비롯한 Javascript, Typescript 플랫폼에서 활용 가능한 ORM
- typescript와 관계형 데이터베이스를 조합할 때 자주 사용되는 ORM이다.
- 모델의 정의를 제대로 하면 타입을 정하는 장점이 있으며 복잡한 모델간의 관계를 형성할 수 있다는 장점이 있다.
- 작성패턴
- Active Record
- 모델 그 자체에 쿼리 메소드를 정의하고 모델의 메소드를 사용하여 객체를 저장, 제거, 불러오는 방식
- 규모가 작은 애플리케이션에 적합하고 간단히 사용할 수 있습니다.
- Data Mapper
- 분리된 클래스에 쿼리 메소드를 정의하는 방식이며, Repository를 이용하여 객체를 저장,제거,불러온다.
- 모델에 접근하는 방식이 아닌, Repository에서 데이터에 접근한다는 것이다.
- 규모가 큰 애플리케이션에 적합하고 유지보수하는데 효과적이다.
- Entity 데코레이터
- 데이터베이스 테이블을 정의하기전에 실행해야하는 데코러이터이다.
- 테이블명을 따로 지정하지 않아도 클래스명으로 매핑하지만, 옵션으로 테이블명을 지정할 수 있다.
- 다양한 상황과 세부설정 사항들이 있으니 해당 블로그를 참고하면 좋을 것 같다.
이런 ORM이 없다면 MySQL을 사용할 때마다 하나하나 명령어를 입력하고 찾아보는 힘겨움이 생겼다는 생각이 아찔했다! 하지만 ORM을 통해서 손쉽게 데이터베이스를 조작할 수 있다는 점이 좋았다. 앞으로 많은 시도를 해보면서 익숙해 지기만 하면되겠다는 마음을 먹으며 오늘의 공부는 여기까지 하겠다 😎
출처: https://gmlwjd9405.github.io/2019/02/01/orm.html