La serializzazione viene utilizzata per la persistenza in Java. Potrebbe andare bene persistere alcuni oggetti usando la serializzazione. Ma, per un gran numero di oggetti, ORM, Database, ecc. Potrebbero essere migliori. Sembra che la serializzazione sia utile solo per piccoli lavori. Forse mi sbaglio. Quindi, per favore, dimmi quali sono i vantaggi della serializzazione rispetto ai metodi non di serializzazione? Quando dovrebbe essere usato e quando dovrebbe essere evitato?
Questa domanda mi è venuta in mente dopo aver visto l'articolo di DZone È la serializzazione degli oggetti male?
E queste sono le linee che hanno dato origine alla mia domanda:
Se si guardano Java e i suoi oggetti sessione, viene utilizzata la serializzazione pura dell'oggetto. Supponendo che una sessione dell'applicazione abbia una durata piuttosto breve, il che significa al massimo poche ore, la serializzazione degli oggetti è semplice, ben supportata e integrata nel concetto Java di una sessione. Tuttavia, quando la persistenza dei dati è per un periodo di tempo più lungo, possibilmente giorni o settimane, e devi preoccuparti delle nuove versioni dell'applicazione, la serializzazione diventa rapidamente malvagia. Come ogni buon sviluppatore Java sa, se si prevede di serializzare un oggetto, anche in una sessione, è necessario un ID di serializzazione reale (serialVersionUID), non solo 1L, e è necessario implementare l'interfaccia serializzabile. Tuttavia, la maggior parte degli sviluppatori non conosce le vere regole alla base del processo di deserializzazione Java. Se il tuo oggetto è cambiato, oltre ad aggiungere semplici campi all'oggetto, è possibile che Java non possa deserializzare correttamente l'oggetto anche se l'ID di serializzazione non è stato modificato. Improvvisamente, non è più possibile recuperare i dati, il che è intrinsecamente negativo.
Ora, gli sviluppatori che leggono questo articolo potrebbero dire che non scriverebbero mai codice che avrebbe questo problema. Questo può essere vero, ma che dire di una libreria che usi o di qualche altro sviluppatore non più impiegato dalla tua azienda? Potete garantire che questo problema non accadrà mai? L'unico modo per garantire che è utilizzare un diverso metodo di serializzazione.
1L
" non è corretta.