Sto sviluppando un'applicazione web di tipo CRUD. È un sistema di project management con progetti, pietre miliari, attività, dipendenti, ecc. Ogni dipendente ha il proprio account per accedere e visualizzare il sistema. I problemi arrivano qui:
-
Se un utente elimina un'attività mentre il secondo lo apre contemporaneamente, il secondo utente otterrà un'eccezione di puntatore nullo se tenta di modificare e salvare, perché l'oggetto non esiste.
-
Lo stesso problema in una situazione leggermente diversa. Un utente ha una finestra di attività aperta. Il secondo utente cancella un dipendente. Il primo utente tenta di assegnare un'attività al dipendente eliminato (perché è già presente nell'elenco in una casella combinata) e ottiene un'eccezione del puntatore nullo.
-
Se qualcuno cancella l'oggetto e l'altro utente tenta di aprirlo contemporaneamente (sarà un'eccezione di puntatore nullo durante il tentativo di ottenere un oggetto)
Sto provando a lasciare i dettagli tecnici del progetto perché è così. Ma se aiuta, sto usando il framework Vaadin basato su Java. Il database è MySQL.
Ho pensato a due possibili soluzioni ma non ne sono sicuro:
-
Cattura un'eccezione di puntatore nullo e stampa un avviso generale sullo schermo ("Mancano alcuni oggetti ...). Ma non sarebbe chiaro per gli utenti che è esattamente successo.
-
Controlla ogni commit dell'oggetto e se è stato eliminato prendi l'eccezione e fornisci una spiegazione più dettagliata. Ma non sarà d'aiuto nella 3a situazione.
Sono davvero alla ricerca di punti guida, consigli o suggerimenti che puoi fornire su come affrontare adeguatamente queste situazioni. Grazie in anticipo!