Prisma é ORM type-safe moderno. Auto-complete, migrations, Prisma Studio. Developer experience excelente, usado por Vercel e Supabase.
Conceitos Principais
Prisma Schema
schema.prisma: models, relations, enums. Single source of truth. Gera Prisma Client e migrations.
Prisma Client
Auto-generated, type-safe. prisma.user.findMany(). Auto-complete em IDE. Compile-time safety.
Relations
1-to-1, 1-to-many, many-to-many. Declarativo no schema. Eager/lazy loading.
Migrations
prisma migrate dev. Auto-generates SQL. Git tracked. prisma migrate deploy em produção.
Passo a Passo
- Setup Prisma: npm install prisma @prisma/client. npx prisma init. Cria schema.prisma e .env.
- Define Schema: model User { id Int @id @default(autoincrement()); email String @unique; posts Post[] }. model Post { id Int @id; authorId Int; author User @relation(fields: [authorId], references: [id]) }.
- Generate Client: npx prisma generate. Cria Prisma Client em node_modules. Import: const prisma = new PrismaClient().
- CRUD Operations: Create: await prisma.user.create({ data: { email: "..." }}). Read: await prisma.user.findMany(). Update: await prisma.user.update({ where: { id: 1 }, data: { email: "..." }}). Delete: await prisma.user.delete({ where: { id: 1 }}).
- Migrations: npx prisma migrate dev --name init. Aplica em dev DB. npx prisma migrate deploy em CI/CD.
Boas Praticas
Recomendacoes
• Schema como single source of truth
• Prisma Studio para debug (npx prisma studio)
• Include relations explicitamente
• Use transactions para operações múltiplas
• Connection pooling (PgBouncer)
• prisma.$queryRaw para queries complexas
Erros Comuns
Evite estes erros
• Não usar include (N+1)
• Migrations não versionadas
• Não usar transactions
• Prisma Client em edge (use Data Proxy)
• Ignoring slow queries
Checklist
- Prisma instalado
- Schema definido
- Client gerado
- CRUD funcionando
- Migrations aplicadas
- Relations testadas