ORM and Data Access

The default or most common ORM and data-access layer used with Express, Fastify, NestJS, Django, Flask, FastAPI, Ruby on Rails, Spring Boot, ASP.NET Core, Laravel, Gin, Fiber, Actix, and Phoenix.

Express

Has no built-in data-access layer at all; developers bring their own, most commonly Prisma, Sequelize, or TypeORM for SQL, and Mongoose for MongoDB. The choice of ORM and its conventions are entirely up to the project.

Fastify

Also ships without any bundled ORM. Prisma, Knex (as a query builder), and Mongoose are common companions, usually wired in as Fastify plugins so the database client is decorated onto the app instance.

NestJS

Framework-agnostic on data access but provides first-class integration modules for TypeORM, Prisma, and Mongoose, exposing them as injectable providers through Nest’s dependency injection system so repositories can be consumed like any other service.

Django

Ships with the Django ORM built directly into the framework: models are defined as Python classes in models.py, migrations are auto-generated from model changes, and QuerySets provide a lazy, chainable query API across Postgres, MySQL, SQLite, and Oracle.

Flask

Has no built-in ORM; Flask-SQLAlchemy is the de facto standard extension, wrapping SQLAlchemy’s Core and ORM layers with Flask-specific configuration and session management conveniences.

FastAPI

Ships without an ORM as well; SQLAlchemy (increasingly its async engine) is the most common pairing, often combined with Pydantic-based SQLModel for a unified model/schema definition, or async drivers like asyncpg for raw queries.

Ruby on Rails

Active Record is the built-in ORM and one of Rails’ signature features, mapping database tables to Ruby classes by convention, with migrations, associations (has_many, belongs_to), and validations all defined declaratively on the model.

Spring Boot

Spring Data JPA, built on top of Hibernate, is the standard data-access approach: repository interfaces automatically generate implementations for common queries, and entities are mapped with JPA annotations.

ASP.NET Core

Entity Framework Core is Microsoft’s official ORM, supporting a code-first workflow with migrations, a DbContext/DbSet model, and LINQ as the primary query language against the mapped entities.

Laravel

Eloquent is the built-in ORM, implementing the Active Record pattern with expressive relationship definitions, migrations, and a fluent query builder that underlies it for lower-level queries.

Gin

Has no built-in data layer; GORM is the most widely used companion ORM in the Go ecosystem, though many Gin projects use database/sql directly or a lighter query builder like sqlx.

Fiber

Also has no bundled data-access layer; like Gin, it’s commonly paired with GORM or sqlx, with the framework itself staying entirely focused on HTTP concerns.

Actix

Ships without an ORM; Diesel (a compile-time-checked query builder/ORM) and SeaORM (async-first) are the most common choices, with sqlx also popular for teams that prefer raw async SQL with compile-time verification.

Phoenix

Ecto is the standard data-mapping and query library used with Phoenix — not a classic ORM, but an explicit system of schemas, changesets for validation/casting, and a composable query DSL for building SQL queries.