Programação

Prisma ORM: Guia Definitivo Para Banco de Dados em Node.js

Vinicius Farias14 min de leitura1604 visualizações
#Prisma#Node.js#Banco de Dados#ORM

Por Que Prisma?


O Prisma se tornou o ORM padrao para projetos Node.js/TypeScript. Type-safety completo, migrations automaticas e uma DX (Developer Experience) que nenhum outro ORM chega perto.

Configuracao Inicial


npm install prisma @prisma/client
npx prisma init

Isso cria a pasta prisma/ com o arquivo schema.prisma.

Modelagem do Schema


O schema do Prisma e declarativo e legivel:


model User {
id String @id @default(cuid())
email String @unique
name String
posts Post[]
profile Profile?
createdAt DateTime @default(now())
}

model Post {
id String @id @default(cuid())
title String
content String @db.Text
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId String
tags String[]
}

Migrations


Depois de alterar o schema, crie uma migration:


npx prisma migrate dev --name add_posts_table

O Prisma gera SQL automaticamente e aplica no banco. Para producao:


npx prisma migrate deploy

Queries Que Voce Vai Usar Todo Dia

Busca com relacoes


const users = await prisma.user.findMany({
where: { posts: { some: { published: true } } },
include: {
posts: { where: { published: true }, take: 5 },
_count: { select: { posts: true } }
}
});

Upsert (criar ou atualizar)


const user = await prisma.user.upsert({
where: { email: 'joao@email.com' },
update: { name: 'Joao Silva' },
create: { email: 'joao@email.com', name: 'Joao Silva' }
});

Transacoes


const result = await prisma.$transaction([
prisma.post.create({ data: { ... } }),
prisma.user.update({ where: { id: '...' }, data: { ... } })
]);

Dicas de Performance



  • Use select para buscar apenas campos necessarios

  • Evite N+1: use include em vez de queries separadas

  • Connection pooling: use PgBouncer ou Prisma Accelerate em producao

  • Indices: adicione @@index nos campos que voce filtra frequentemente

Prisma com NeonDB


NeonDB e Prisma formam o combo perfeito para projetos serverless. O Neon oferece branching de banco (igual Git) e escala automaticamente.

Conclusao


Prisma elimina a complexidade de trabalhar com banco de dados sem sacrificar performance. Se voce ainda escreve SQL puro em projetos Node.js, esta perdendo produtividade.

Compartilhar este artigo: