What is the difference between Prisma client and Prisma bindings?
The Prisma client and Prisma bindings both provide ways to interact with the Prisma server that sits on top of your database and therefore allow you to read and write data in your database. It is generally recommended to use the Prisma client. Prisma bindings can be used for advanced use cases when building GraphQL servers.
Prisma bindings have one clear use case, they're used for implementing GraphQL resolvers based on schema delegation. This means the
info object that's received by your GraphQL resolvers is passed down to the Prisma API using Prisma bindings. You can learn more about building GraphQL server with Prisma bindings here.
Prisma bindings are installed into your application using the
prisma-binding package from NPM. Its API mirrors the Prisma GraphQL API.
The Prisma client is used as a replacement for traditional ORMs and enables you to read and write data in your database. A few of its core advantages compared to Prisma bindings are:
- Auto-generated based on datamodel
- Full type-safety
- Simpler and more intuitive API (e.g. the fluent API for relations)
- Fleixble use cases
- Available in various programming languages
The Prisma client is auto-generated using the
prisma1 generate command of the Prisma CLI. The Prisma CLI reads the information from your
prisma.yml and generates the according Prisma client.
For example, consider this configuration of the
generate property in your
If you've implemented GraphQL servers using Prisma bindings before, implementing resolvers for the relations in your GraphQL schema can be a bit difficult at first. See this tutorial to learn more about implemeting relations with the Prisma client.