StackShareStackShare
Follow on
StackShare

Discover and share technology stacks from companies around the world.

Follow on

© 2025 StackShare. All rights reserved.

Product

  • Stacks
  • Tools
  • Feed

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  1. Stackups
  2. Application & Data
  3. Languages
  4. Query Languages
  5. PostGraphile vs Prisma

PostGraphile vs Prisma

OverviewDecisionsComparisonAlternatives

Overview

PostGraphile
PostGraphile
Stacks85
Followers214
Votes47
Prisma
Prisma
Stacks1.3K
Followers974
Votes55
GitHub Stars44.2K
Forks1.9K

PostGraphile vs Prisma: What are the differences?

Introduction

PostGraphile and Prisma are both tools used for building and managing database schemas in the context of web development. While they share some similarities, they also have key differences that set them apart. In this Markdown document, we will highlight and provide a brief description of the key differences between PostGraphile and Prisma.

  1. Database Connection: PostGraphile connects directly to your existing PostgreSQL database, utilizing the schema introspection capabilities of the database to automatically generate a GraphQL API. On the other hand, Prisma operates as an abstraction layer between your application and the database, creating its own database schema that can be seamlessly connected to various databases, including PostgreSQL.

  2. Schema Generation Approach: PostGraphile generates the GraphQL schema and resolvers by directly reflecting on the database schema. It provides a fully dynamic API where the GraphQL schema reflects the database schema exactly, including table and column names, relationships, and type mappings. Prisma, on the other hand, generates a Prisma schema file that describes the data model, which is then used to generate database-level CRUD and query operations.

  3. Client Library: PostGraphile does not provide a client library, but it instead focuses on generating a GraphQL API server. This means that developers need to write their own client-side code to consume the GraphQL schema. Prisma, on the other hand, provides its own client library that simplifies database access and operations. The Prisma client enables developers to write type-safe, auto-completed queries directly in their application code.

  4. Data Migrations: PostGraphile does not provide built-in data migration tools. It assumes that the database schema is already managed separately, and it dynamically adapts to any changes made in the database. Prisma, on the other hand, includes a built-in database migration system that allows developers to manage their database schema changes and apply them in a controlled and scalable manner.

  5. Authentication and Authorization: PostGraphile does not include built-in authentication and authorization mechanisms. Instead, it provides extensions and plugins to integrate with existing authentication and authorization systems like JWT or OAuth. Prisma, on the other hand, includes a declarative and flexible access control system that allows developers to define fine-grained permissions and roles at the schema level, securing the data exposed by the Prisma API.

  6. Performance and Optimization: PostGraphile dynamically generates the GraphQL schema and resolvers based on the database schema, which can lead to great flexibility but also potential performance issues when working with large and complex databases. Prisma, on the other hand, optimizes and generates efficient database queries based on the GraphQL queries received, resulting in better performance by only fetching the necessary data.

In Summary, PostGraphile directly connects to the PostgreSQL database, generates the GraphQL schema dynamically, requires a separate client library, and lacks built-in data migration and authentication/authorization mechanisms. On the other hand, Prisma abstracts the database connection, uses a separate Prisma schema file, provides its own client library, includes a built-in migration system, offers a declarative access control system, and optimizes database queries for performance.

Share your Stack

Help developers discover the tools you use. Get visibility for your team's tech choices and contribute to the community's knowledge.

View Docs
CLI (Node.js)
or
Manual

Advice on PostGraphile, Prisma

Raj
Raj

CTO & Founder at Novvum

Oct 5, 2020

Review

Hey Brian, it's hard to pick a best tool for any situation, however, there are tools that offer advantages dependent on use case.

Server Side

If you're looking to quickly generate a GraphQL API, you can use a Graphql As A Service like FaunaDB, Slash Graphql, or 8base.

If you want something more advanced on the server side: Prisma with Postgres, Nexus, & Apollo Server (js) is a great stack to try out. Examples here

Check out TypeORM and TypeGraphQL too

If you're have some existing data on Postgres, PostGraphile or Hasura are your best bet!

If you are using a lot of AWS services, check out Amplify and AppSync. Tutorial here

On the client side:

Check out Gatsby! Graphql is already configured and used to query static or remote information at build time. It's a great way to get your feet wet!

Apollo Client is often the choice for more advanced use cases. But URLQL and gqless are some pretty good alternatives too!

Hope this helps! 👍

292 views292
Comments
Raj
Raj

Oct 10, 2020

Review

It purely depends on your app needs. Does it need to be scalable, do you have lots of features, OR it is a simple project with very simple needs - many of those parameters clarify which technologies will fit.

If you are looking for a quick solution, that reduces lot of development time, take a look at postgraphile (https://www.graphile.org/postgraphile/). You have to just define the schema and you get the entire graph-ql apis built for you and you can just focus on your frontend.

On frontend, React is good, but also need to remember that it is popular because it introduced one way data writes and in-built virtual dom + diffing to determine which dom to modify. Though personally I liked it, am recently more inclined to Svelte because its lightweightedness and absence of virtual dom and its simplicity compared to the huge ecosystem that React has surrounded itself with.

In all situations, frameworks keep changing over time. What is best today is not considered even good few years from now. What is important is to have the logic in a separate, clean manner void of too many framework related dependencies - that way you can switch one framework with another very easily.

3.76k views3.76k
Comments

Detailed Comparison

PostGraphile
PostGraphile
Prisma
Prisma

Execute one command (or mount one Node.js middleware) and get an instant high-performance GraphQL API for your PostgreSQL database

Prisma is an open-source database toolkit. It replaces traditional ORMs and makes database access easy with an auto-generated query builder for TypeScript & Node.js.

instant GraphQL schema via reflection over PostgreSQL database API; compiles complex GraphQL queries into very few SQL statements resulting in high performance; built entirely from plugins - heavily customisable; support for PostgreSQL RBAC and RLS; watch mode (monitors for database schema changes) for great DX; standalone server, express middleware, or GraphQL schema; integration with Express auth via pgSettings (e.g. Passport.js, optional); JWT auth (optional); very strong support for PostgreSQL functions; simple to set up and scale
Auto-generated and type-safe query builder for Node.js & TypeScript; Declarative data modeling & migration system; GUI to view and edit data in your database; Single source of truth for database and application models; Auto-completion in code editors instead of needing to look up documentation; Less boilerplate so developers can focus on the important parts of their app; Queries not classes to avoid complex model objects;
Statistics
GitHub Stars
-
GitHub Stars
44.2K
GitHub Forks
-
GitHub Forks
1.9K
Stacks
85
Stacks
1.3K
Followers
214
Followers
974
Votes
47
Votes
55
Pros & Cons
Pros
  • 10
    Postgres based authentication
  • 6
    Great developer support
  • 5
    Lightning fast
  • 5
    Database first with no braking changes
  • 4
    Simple to set up and scale
Pros
  • 12
    Type-safe database access
  • 10
    Open Source
  • 8
    Auto-generated query builder
  • 6
    Increases confidence during development
  • 6
    Supports multible database systems
Cons
  • 2
    Doesn't support downward/back migrations
  • 1
    Do not support JSONB
  • 1
    Mutation of JSON is really confusing
  • 1
    Do not support JSONB
  • 1
    Doesn't support JSONB
Integrations
Apollo
Apollo
ExpressJS
ExpressJS
Node.js
Node.js
PostgreSQL
PostgreSQL
Koa
Koa
GraphQL
GraphQL
Fastify
Fastify
Relay Framework
Relay Framework
graphql.js
graphql.js
TypeScript
TypeScript
Node.js
Node.js
Microsoft SQL Server
Microsoft SQL Server
PostgreSQL
PostgreSQL
Serverless
Serverless
Apollo
Apollo
SQLite
SQLite
MongoDB
MongoDB
GraphQL
GraphQL
MariaDB
MariaDB

What are some alternatives to PostGraphile, Prisma?

GraphQL

GraphQL

GraphQL is a data query language and runtime designed and used at Facebook to request and deliver data to mobile and web apps since 2012.

Sequelize

Sequelize

Sequelize is a promise-based ORM for Node.js and io.js. It supports the dialects PostgreSQL, MySQL, MariaDB, SQLite and MSSQL and features solid transaction support, relations, read replication and more.

OData

OData

It is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming RESTful APIs. It helps you focus on your business logic while building RESTful APIs without having to worry about the various approaches to define request and response headers, status codes, HTTP methods, URL conventions, media types, payload formats, query options, etc.

Hibernate

Hibernate

Hibernate is a suite of open source projects around domain models. The flagship project is Hibernate ORM, the Object Relational Mapper.

Doctrine 2

Doctrine 2

Doctrine 2 sits on top of a powerful database abstraction layer (DBAL). One of its key features is the option to write database queries in a proprietary object oriented SQL dialect called Doctrine Query Language (DQL), inspired by Hibernates HQL.

MikroORM

MikroORM

TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL and SQLite databases.

Entity Framework

Entity Framework

It is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write.

peewee

peewee

A small, expressive orm, written in python (2.6+, 3.2+), with built-in support for sqlite, mysql and postgresql and special extensions like hstore.

MyBatis

MyBatis

It is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. It eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. It can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

Entity Framework Core

Entity Framework Core

It is a lightweight, extensible, open source and cross-platform version of the popular Entity Framework data access technology. It can serve as an object-relational mapper (O/RM), enabling .NET developers to work with a database using .NET objects, and eliminating the need for most of the data-access code they usually need to write.

Related Comparisons

Bootstrap
Materialize

Bootstrap vs Materialize

Laravel
Django

Django vs Laravel vs Node.js

Bootstrap
Foundation

Bootstrap vs Foundation vs Material UI

Node.js
Spring Boot

Node.js vs Spring-Boot

Liquibase
Flyway

Flyway vs Liquibase