È uscito il Corso Java Completo — usa il coupon JAVA2026 (fino al 30 giugno)

Installazione

Installazione di Prisma

Prisma si installa come dipendenza di sviluppo. Il client generato viene poi usato come dipendenza di produzione.

1. Installare le dipendenze

# Prisma CLI come dev dependency
npm install prisma --save-dev

# Prisma Client come dependency di produzione
npm install @prisma/client

2. Inizializzare Prisma

Il comando init crea la struttura base del progetto Prisma:

# Inizializzazione con PostgreSQL (default)
npx prisma init

# Specificare un provider diverso
npx prisma init --datasource-provider sqlite
npx prisma init --datasource-provider mysql
npx prisma init --datasource-provider mongodb

Questo crea due file:

  • prisma/schema.prisma: il file di definizione dello schema.
  • .env: il file per le variabili d’ambiente (contiene DATABASE_URL).

3. Configurare il Database

PostgreSQL

DATABASE_URL="postgresql://utente:password@localhost:5432/nome_database?schema=public"

MySQL

DATABASE_URL="mysql://utente:password@localhost:3306/nome_database"

SQLite

DATABASE_URL="file:./dev.db"

Lo schema si aggiorna di conseguenza:

datasource db {
  provider = "sqlite"  // "postgresql", "mysql", "mongodb", "sqlserver"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

4. Definire un Modello Iniziale

Aggiungi almeno un modello per testare la configurazione:

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  createdAt DateTime @default(now())
}

5. Applicare lo Schema e Generare il Client

# In sviluppo: crea migrazione + applica + genera client
npx prisma migrate dev --name init

# Alternativa rapida senza migrazioni (prototipazione)
npx prisma db push

6. Generare il Client Manualmente

Se modifichi lo schema senza migrare, puoi rigenerare il client separatamente:

npx prisma generate

Questo aggiorna i tipi TypeScript in node_modules/@prisma/client.

7. Verificare il Funzionamento

Crea un file di test per assicurarti che tutto funzioni:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  const user = await prisma.user.create({
    data: {
      email: 'test@example.com',
      name: 'Test User',
    },
  })
  console.log('Utente creato:', user)

  const users = await prisma.user.findMany()
  console.log('Tutti gli utenti:', users)
}

main()
  .catch((e) => {
    console.error(e)
    process.exit(1)
  })
  .finally(async () => {
    await prisma.$disconnect()
  })

Setup con TypeScript

Se il progetto non ha ancora TypeScript configurato:

npm install typescript ts-node @types/node --save-dev
npx tsc --init

Nel tsconfig.json assicurati di avere:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "outDir": "./dist"
  }
}

Comandi CLI Essenziali

Comando Descrizione
npx prisma init Inizializza Prisma nel progetto
npx prisma generate Rigenera il Prisma Client
npx prisma migrate dev Crea e applica una migrazione
npx prisma db push Sincronizza lo schema senza migrazioni
npx prisma studio Apre la GUI web per esplorare i dati
npx prisma format Formatta il file schema.prisma
npx prisma validate Valida il file schema.prisma