← Tutti gli episodi
Copertina di La sessione invisibile: come l'ORM tiene il conto
Stagione 57 · Episodio 004

La sessione invisibile: come l'ORM tiene il conto

15 settembre 2026 4:47
0:00 4:47

Ciao, e benvenuto nella quarta puntata della cinquantasettesima stagione. Oggi guardiamo un pezzo di macchina che quasi tutti ignorano, ma che spiega molti comportamenti sorprendenti del mappatore: il modo in cui tiene il conto di quello che stai facendo, mentre lo fai. Oggi parliamo della sessione invisibile.

Partiamo da un'illusione, perché è da lì che nascono le sorprese. Quando lavori con un mappatore, hai l'impressione di parlare direttamente col database: leggo un utente, cambio il suo nome, ne leggo un altro. Sembra un dialogo immediato, botta e risposta. Ma nella maggior parte dei casi non è così. Tra te e il database c'è uno spazio di lavoro in memoria, una specie di scrivania temporanea, che il mappatore usa per tenere traccia di tutto. Questa scrivania ha un nome che cambia da strumento a strumento, ma il concetto è sempre lo stesso: è la sessione, il luogo dove il mappatore ricorda cosa hai caricato e cosa hai cambiato.

Voglio dirti la prima cosa che ricorda, perché è elegante. La prima cosa che questa scrivania tiene a mente è l'identità. Se carichi l'utente numero cinque, poi da qualche altra parte nel codice lo carichi di nuovo, il mappatore non ti restituisce due oggetti separati. Ti restituisce lo stesso identico oggetto, perché ha capito che si tratta della stessa riga del database. Tiene una mappa: a questa riga corrisponde questo oggetto in memoria, e finché siamo nella stessa sessione, resta sempre quello. Questo evita un sacco di confusione, perché non ti ritrovi con due copie della stessa cosa che rischiano di andare fuori sincrono.

Voglio dirti la seconda cosa che fa, perché è ancora più importante. La seconda cosa che la scrivania fa è accumulare i cambiamenti invece di applicarli subito. Quando cambi il nome di un utente, il mappatore spesso non corre subito a scrivere nel database. Si annota che quell'oggetto è cambiato, che è, come si dice, sporco. Poi ne cambi un altro, e un altro ancora. Il mappatore accumula tutte queste modifiche sul suo taccuino. E solo a un certo punto, quando glielo chiedi o quando chiude la sessione, prende tutti gli appunti e li scrive nel database insieme, in un colpo solo. Lavorare in blocco è più efficiente che correre al database a ogni singola modifica.

Voglio darti l'immagine che rende chiara questa idea, perché la fissa. Pensa a un assistente diligente con un taccuino. Tu, durante la giornata, gli dici le cose da fare: cambia l'indirizzo del cliente Rossi, aggiorna l'ordine di Bianchi, registra un nuovo cliente. Lui non corre all'archivio ogni volta. Si annota tutto sul taccuino. E se nomini due volte il cliente Rossi, sa benissimo che è la stessa persona, non due clienti diversi. Poi, a fine giornata, va all'archivio una volta sola e sistema tutto insieme. È ordinato, è efficiente, ed è esattamente ciò che il mappatore fa per te dietro le quinte.

Voglio dirti perché devi conoscere questo meccanismo, perché è la lezione pratica. Il problema è che questa scrivania invisibile è comodissima finché la ignori, ma diventa una fonte di sorprese quando qualcosa non torna. Ti chiedi perché una modifica non è ancora finita nel database: è perché è ancora sul taccuino, non ancora archiviata. Ti chiedi perché due parti del codice vedono lo stesso oggetto cambiare sotto i piedi: è perché è davvero lo stesso oggetto, grazie alla mappa delle identità. Ti chiedi perché a volte scattano scritture in momenti inattesi: è la sessione che decide di svuotare il taccuino. Chi non sa che questa scrivania esiste, vede fantasmi. Chi lo sa, capisce esattamente cosa succede.

Voglio darti la lezione generale, perché vale ovunque. La lezione è che quasi ogni strumento comodo, per esserlo, mantiene uno stato nascosto per tuo conto. Ti fa sembrare che stia succedendo una cosa semplice e immediata, mentre dietro c'è un meccanismo che accumula, ricorda, ottimizza. Questo stato nascosto è un regalo, perché ti risparmia lavoro. Ma è anche una responsabilità, perché i comportamenti che non capisci nascono quasi sempre proprio lì, in quello stato che non vedi. Sapere che esiste, e conoscere le sue regole di base, è ciò che separa chi subisce lo strumento da chi lo governa.

Per oggi ci fermiamo qui. Abbiamo visto la sessione invisibile del mappatore. Non parli mai davvero in diretta col database: tra te e lui c'è una scrivania in memoria che tiene il conto. Ricorda l'identità, così due caricamenti della stessa riga ti danno lo stesso oggetto, senza copie fuori sincrono. E accumula i cambiamenti su un taccuino, invece di correre al database a ogni modifica, per poi scriverli tutti insieme in un colpo solo. Come un assistente diligente che annota tutto e a fine giornata sistema l'archivio una volta sola. Comodissima finché la ignori, sorgente di fantasmi quando non sai che esiste. Nella prossima puntata: il problema che ti morde, le query nascoste e il flagello delle interrogazioni. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.