Anúncio

20220414GraphQLとORM.pptx

12 de Mar de 2023
Anúncio

Mais conteúdo relacionado

Último(20)

Anúncio

20220414GraphQLとORM.pptx

  1. GraphQLとORMの連携について 1/11
  2. gqlgenによるGraphQLと、GORMによるDB操作 ・gqlgen ・GORM スキーマを定義することで、クエリ受け取りと レスポンス返却の部分を自動で実装する 受け取ったクエリの値を用いてデータベースの 操作を行い、その結果をgraphqlに返す 2/11
  3. クエリによるuserの新規登録① Userのデータ型 Userにデータを 入れるときの型 レスポンスに記載したい 新規登録したUserのデータ 新規に登録する Userのデータ 新規にUserを作るための 関数名 スキーマ定義 クエリ 3/11
  4. クエリによるuserの新規登録② レスポンス データベース内のデータ クエリをエンドポイント「/query」にPOSTするのみで 簡単にUserの登録ができた 4/11
  5. /queryにPOSTすると、 graphqlハンドラに DB接続が渡される DB接続とルーティング DB接続処理 gqlgenが用いるResolver型に GORMのDBを渡す 5/11
  6. DB操作のコード(CREATE) VALUESに入る値を inputから取得 スキーマ 関数 SQLログ INSERT文作成 6/11
  7. DB操作のコード(UPDATE) VALUESに入る値を inputから取得 スキーマ 関数 SQLログ First()でIDに合致するUserを探し、 そのUserに対してUpdates()する クエリ 7/11
  8. DB操作のコード(DELETE) ID指定でUserをDELETEする。 Clausesを呼び出して消去した Userの取得も行う スキーマ 関数 SQLログ 8/11
  9. DB操作のコード(READ)① スキーマ 全Userを取得する関数 関連テーブルを Eager Load GraphQLは関連テーブルのデータも同時に取得できるが、 そのまま検索するだけではN + 1問題が発生する 関連テーブル GraphQLは関連テーブル同士に双方向性を持たせることが ベストプラクティスと言われる。 これに従い、typeには関連テーブルのtypeも含めると、 Eager Loadが行いやすくなる 9/11
  10. DB操作のコード(READ)② 2人のUserと 合計13つのPost 全Userを、投稿したPostも含めて取得する User Post Postが13つあるため、14つのSELECT文が 作成されるところ、 Eager Load により6つまで減らすことができた 10/11
  11. GraphQLとORMを組み合わせるメリット ・データベース処理の最適化とレスポンス絞り込みにより、 大きなパフォーマンス向上が狙える ・後からデータ定義を変更しても、容易に対応ができる ・N+1問題やエラーハンドリングなど、GraphQLの苦手分野に 対応がしやすくなる ・DDDやCQRSなど、モダンな設計パターンと相性が良い 11/11
Anúncio