서버 설정을 모두 마친 상태이며 이제 필요한건 실제 서비스 구상에 필요한 데이터베이스 설계인 것 같다.
TypeORM 을 사용하였기 때문에 sql문의 사용을 최소화 시켜서 서버 개발을 할 수 있었으며,
편한점도 있었지만 한편으로는 불편한점도 적잖게 있었다.
쿼리를 직접 사용하던 기존 방식에서 ORM을 이용하여 데이터를 가져는 방식은 나에겐 아직 적응이 필요한 것 같다. 하지만 ORM을 사용해서 데이터를 가져옴으로 인해서 GraphQL을 이용한 개발에는 강점이 존재하고 편하다는 것은 누구나 인정할 것 같은 부분이다. 또한 쿼리 빌더의 사용법이 익숙해진다면 쿼리를 작성하면서 발생할 수 있는 실수들도 최소화 될것으로 예상이 된다.
여기서 작성할 entities들은 Graphql Server 구동 글(Run Graphql Server with graphql-yoga ) 에서 사용된 connectionOptions에서 사용된 entities들이다.
정리하는 차원에서 ORM config 데이터는 아래와 같다.
여러 entity중 영화와 관련된 entity는 다음과 같다.
위와 같이 작성해주고 MovieGenres, MovieRank, MovieActor entity들도 작성을 해주어야 한다.
그렇게 해주면 TypeORM이 해당 객체간의 연관 관계를 생성해주게 되고, 필드 옵션에서 eager 옵션을 통해 상시 데이터를 가져올수 있지만, 데이터 쿼리시에 relations 를 이용해서 가져올 수도 있음.
위와 같이 entity들을 쭉 생성해주게 되면 서버 구동시에 해당 entity들에 맞춰서 디비 동기화가 일어나게 된다. 물론 해당 기능을 켜고 끄는건 별도의 설정을 해주어야 할 부분이다. 해당 부분 놓치게 되면 의도치 않게 마이그레이션이 일어나게 되고, 그로인데 의도치 않게 서비스에 문제가 생길 수 있는 부분으로 보인다.
위의 entity를 이용해서 추후에 graphql definition을 해줄 예정이다.
필드들만 복사해서 붙여넣어주면 되기 때문에 작성이 그렇게 어렵거나 하진 않지만, 스키마가 바뀔때마다 업데이트를 해주는건 여전히 귀찮은 문제로 남을 것 같다.
동기화 부분만 잘 신경써주게 되면 Typeorm 과 graphql 은 서버 개발을 정말 편하게 만들어 주는 도구인건 확실한것 같다. 추후 개인 프로젝트는 무조건 이렇게 진행할 것이다.
'Dev Dialry > PickMovie' 카테고리의 다른 글
Graphql Schema and Definition (0) | 2019.01.21 |
---|---|
Run Graphql Server with graphql-yoga (0) | 2018.12.12 |
Package Setup (0) | 2018.12.10 |
Spec (0) | 2018.12.10 |