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_tableO 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
includeem vez de queries separadas - Connection pooling: use PgBouncer ou Prisma Accelerate em producao
- Indices: adicione
@@indexnos 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.