The Broad Way

[ Sharp Mind · Sharp Blade · Sharp Spirit ]

root@construct:~
/prisma-vs-typeorm-vs-sql-puro-a-resposta-definitiva
$_
<-- back to /logs
2026-01-31//LOG

Prisma vs TypeORM vs SQL Puro: A Resposta Definitiva

Ja usei os tres em producao. Prisma no TOPO Contabil (42 modulos NestJS). TypeORM em dois servicos mais velhos da Yooga. SQL puro em query critica de performance pra relatorio. Aqui vai o ranking definitivo depois de anos apanhando de ORM. PRISMA: O VENCEDOR (NA MAIORIA DAS VEZES) Prisma ganha em DX e nao ta nem perto. O arquivo de schema eh lindo. Tu define os models num lugar so e ganha tipos gerados, client de query e migracoes. A type safety eh insana. Se o schema diz que campo eh obrigatorio, os tipos TypeScript NAO VAO te deixar esquecer. Autocomplete na IDE funciona DE VERDADE porque o client gerado conhece cada campo, cada relacao, cada formato de query possivel. Sistema de migracao eh solido. prisma migrate dev gera migracoes SQL a partir de mudanca no schema. Da pra revisar, editar, e fica versionado no repo. Acabou o "qual eh o estado atual do banco mesmo?" Onde o Prisma apanha: query complexa. Qualquer coisa com subquery, window function, CTE ou filtragem dinamica fica feio rapido. A API do Prisma Client nao foi feita pra query analitica e da pra notar. TYPEORM: O PERDEDOR Honestamente nao consigo recomendar TypeORM pra projeto novo. As definicoes de entidade baseadas em decorator parecem bonitas ate tu precisar debugar type mismatch e perceber que os tipos TypeScript e o comportamento em runtime sao duas coisas COMPLETAMENTE diferentes. Decorator do TypeORM MENTE pra tu. Coluna marcada como type: "varchar" com nullable: false vai aceitar null em runtime de boa e inserir silenciosamente. Puta que pariu. Query builder eh poderoso mas a API eh inconsistente. Uns metodos retornam a entidade, outros retornam resultado raw, outros retornam objeto wrapper. Tu vive checando a doc pra saber com qual ta lidando. Active Record versus Data Mapper. Dois padroes, os dois suportados, nenhum direito. Escolhe um e metade dos exemplos online usa o outro. Historia de migracao eh a pior parte. Migracao auto-gerada frequentemente produz SQL ERRADO. Ja vi gerar DROP COLUMN seguido de ADD COLUMN em vez de ALTER COLUMN. Em producao. Numa tabela com 2 milhoes de linhas. Juro por tudo. SQL PURO: A SAIDA DE EMERGENCIA As vezes tu so precisa escrever SQL na mao. Prisma tem prisma.$queryRaw pra isso e funciona bem demais. Tu perde type safety mas ganha o poder total do PostgreSQL. Window function, CTE recursiva, lateral join, agregacao complexa. Tudo aquilo que ORM sofre pra fazer. No TOPO Contabil, uns 15% das queries sao SQL puro. Tudo query de relatorio e analytics onde o Prisma Client ia ficar impossivelmente verboso ou literalmente nao consegue expressar. A RESPOSTA DE VERDADE Usa Prisma como ORM principal. Usa prisma.$queryRaw quando o Prisma nao da conta. Nao usa TypeORM. Se tu ta comecando projeto novo com TypeORM em 2026, eu preciso que tu reconsidere tuas escolhas de vida. Prisma + escape hatch de SQL puro cobre 100% dos casos. A DX eh incomparavel. A type safety eh real (nao decorativa que nem TypeORM). O sistema de migracao funciona. Manda bala.
The Broad Way | Kinho.dev