---
title: ent.について_リゾルバ実装編
tags: 
author: [Katsushi21](https://www.docswell.com/user/Katsushi21)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/2JVL1V297Q.jpg?width=480
description: ent.について_リゾルバ実装編 by Katsushi21
published: January 18, 24
canonical: https://www.docswell.com/s/Katsushi21/K38QRE-2024-01-18-005613
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/2JVL1V297Q.jpg)

1/11
ent.について
リゾルバ実装編


# Page. 2

![Page Image](https://bcdn.docswell.com/page/5EGX2LR4JL.jpg)

2/11
前回のあらすじ
・グラフ構造に特化したORM、ent.の設定を開始
・ent.の設定ファイルによって、RDBの全テーブルのフィールドと、
テーブル間の関係性を定義


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4JQ8PYVR7P.jpg)

3/11
今回用意したテーブル構造
・汎用なSNSを想定
・アカウントはポストを投稿できる
・ポストには位置情報を追加できる
・ポストには「いいね」とコメントができる
・アカウント同士でフレンド関係を作れる
・特定のアカウントをミュートにできる


# Page. 4

![Page Image](https://bcdn.docswell.com/page/K742YWMQJ1.jpg)

4/11
GraphQLサーバーの流れと実装
リゾルバがクエリを受け取り、リゾルバがORMの関数を呼び出し、
ORMがSQLを発行する
クライアント
リゾルバ
ORM(ent.)
ent. + gqlgenで実装
手動で実装
DB
.entのデータ
モデリングで定義


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LJ1M6Y8LEG.jpg)

5/11
ent.とgqlgenの連携
gqlgen
・スキーマを定義することで、クエリ受け取りと
レスポンス返却の部分を自動で実装するライブラリ
ent.はデータモデルからスキーマを生成する機能があり、
そのスキーマからリゾルバを生成する流れを自動化できる
gqlgenによる自動生成前に
簡単なコードを実行するように仕込む


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJW3WGZQJ2.jpg)

6/11
ent.とgqlgenによる自動生成後
リゾルバが自動的に作成された後、panic～
の部分を書き換えていく
スキーマを追加で用意すれば、他のリゾルバも
自動で生成してくれる


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EZV5L13J3.jpg)

7/11
ent.とgormのリゾルバ記述の比較①
Golangの代表的なORMであるgormでリゾルバを実装した場合と比較
全ポストを検索する記述
gorm
ent.


# Page. 8

![Page Image](https://bcdn.docswell.com/page/Y7659WLZEV.jpg)

8/11
全ポスト+αの検索結果
ポストのID
ポストのタイトル
ポストの内容
ポストを投稿した
アカウントの名前とそのフレンドの名前
レスポンス
クエリ
ポストにコメントした
アカウントの名前とコメントの内容
ポストにいいねした
アカウントの名前


# Page. 9

![Page Image](https://bcdn.docswell.com/page/G75YNM1974.jpg)

9/11
ent.とgormのリゾルバ記述の比較②
ポストを投稿する記述の比較
gorm
ent.


# Page. 10

![Page Image](https://bcdn.docswell.com/page/9J2G5915JR.jpg)

10/11
ポストの投稿結果
クエリ
レスポンス
DB
投稿のデータ
レスポンスしてほしいデータ


# Page. 11

![Page Image](https://bcdn.docswell.com/page/DEYVK4Z6EM.jpg)

11/11
ここまでのまとめ
・データモデリング完了後、次に行うのはリゾルバの実装
・ent.のgqlgenの連携によってリゾルバの実装を自動化できる
・gormと比べ、ent.のリゾルバ実装は簡単なコードで実装できる


