Saltar al contenido principal

Introducción

Prisma es un ORM (Object-Relational Mapper) moderno para Node.js y TypeScript que facilita trabajar con bases de datos relacionales como MySQL, PostgreSQL, SQLite y SQL Server. Prisma permite definir modelos de datos de manera declarativa y proporciona una API tipo objeto para realizar operaciones CRUD, relaciones y consultas complejas sin escribir SQL manualmente.

A diferencia de los ORMs tradicionales (como Sequelize o TypeORM), Prisma no requiere que el desarrollador defina los modelos directamente en el código fuente como clases. En su lugar, utiliza un archivo de esquema declarativo (schema.prisma) desde el cual genera automáticamente el cliente de base de datos con tipos TypeScript precisos.

Bases de datos soportadas

Prisma es compatible con los siguientes sistemas de gestión de bases de datos:

  • PostgreSQL
  • MySQL / MariaDB
  • SQL Server
  • SQLite
  • MongoDB (completo en v6, parcial en v7)
  • PlanetScale
  • CockroachDB

Ventajas de Prisma ORM

  • Seguridad de tipos (type safety): Prisma genera tipos TypeScript a partir del esquema de datos. Esto significa que cualquier consulta incorrecta se detecta en tiempo de compilación, no en tiempo de ejecución. En la versión 7, la evaluación de tipos es un 70% más rápida y require un 98% menos de tipos que en versiones anteriores.
  • Autocompletado y DX (developer experience): El cliente generado ofrece autocompletado completo en editores como VS Code, lo que reduce los errores y acelera el desarrollo.
  • Migraciones controladas: Prisma Migrate permite gestionar los cambios en el esquema de forma declarativa, generando archivos SQL versionados que pueden revisarse y compartirse en el repositorio.
  • Esquema como única fuente de verdad: Todo se define en schema.prisma: modelos, relaciones, tipos y configuración. Esto evita la duplicación de definiciones que ocurre en otros ORMs.
  • Compatibilidad con entornos serverless y edge: Gracias a los driver adapters y al cliente basado en WebAssembly (v7+), Prisma funciona en entornos sin soporte para binarios nativos: Cloudflare Workers, Deno Deploy, Vercel Edge, etc.
  • Comunidad y ecosistema: Prisma es el ORM más popular del ecosistema TypeScript, con miles de equipos utilizándolo en producción. Cuenta con extensiones oficiales como @prisma/extension-accelerate y @prisma/extension-read-replicas.

Desventajas de Prisma ORM

  • Curva de aprendizaje inicial: el modelo mental de Prisma difiere bastante de otros ORMs.
  • No admite herencia de modelos: la herencia orientada a objetos no se mapea directamente.
  • MongoDB con soporte limitado: aunque existe soporte, es menos maduro que para bases de datos relacionales.
  • Generación de código: el paso de generación (prisma generate) debe ejecutarse cada vez que el esquema cambia.

Componentes principales

Prisma está compuesto por tres herramientas diferenciadas:

Prisma Schema

Archivo de configuración central del proyecto (.prisma). En él se define:

  • El proveedor de base de datos (datasource).
  • Los modelos de datos (equivalentes a tablas).
  • Las relaciones entre modelos.
  • La configuración del generador de cliente.

Prisma Client

Cliente de acceso a datos generado automáticamente a partir del esquema. Ofrece una API fluida y completamente tipada para realizar operaciones CRUD y consultas avanzadas.

Prisma Migrate

Herramienta de migraciones que genera y aplica cambios en el esquema de base de datos de forma controlada y reproducible.

Prisma Studio (opcional)

Interfaz gráfica para explorar y editar los datos de la base de datos directamente desde el navegador. A partir de la versión 7, Prisma Studio es una herramienta renovada e independiente del ORM.