Серіалізація використовується для збереження в Java. Можливо, буде добре зберігати кілька об'єктів за допомогою серіалізації. Але, для великої кількості об'єктів, ORM, база даних тощо може бути кращою. Здається, що серіалізація корисна лише для невеликих робочих місць. Можливо, я помиляюся. Тож скажіть, будь ласка, які переваги серіалізації перед несеріалізаційними методами? Коли його слід застосовувати і коли слід уникати?
Це питання мені прийшло в голову після перегляду статті DZone Is Obay Serialization Evil?
І ось рядки, які породили моє запитання:
Якщо ви подивитеся на Java та її об'єкти сеансу, використовується серіалізація чистого об'єкта. Якщо припустити, що сеанс програми досить короткочасний, тобто не більше кількох годин, серіалізація об'єктів проста, добре підтримується і вбудована в концепцію Java сеансу. Однак, коли збереження даних триває довший період часу, можливо, дні чи тижні, і вам доведеться турбуватися про нові випуски програми, серіалізація швидко стає злою. Як знає будь-який хороший розробник Java, якщо ви плануєте серіалізувати об’єкт навіть на сеансі, вам потрібен справжній ідентифікатор серіалізації (serialVersionUID), а не лише 1L, і вам потрібно реалізувати інтерфейс Serializable. Однак більшість розробників не знають реальних правил, що стоять за процесом деріаріалізації Java. Якщо ваш об’єкт змінився, більше ніж просто додати до об’єкта прості поля, можливо, Java не може деріаріалізувати об'єкт правильно, навіть якщо ідентифікатор серіалізації не змінився. Раптом ви більше не можете отримати свої дані, що по суті є поганим.
Тепер розробники, читаючи це, можуть сказати, що вони ніколи не напишуть код, який би мав цю проблему. Це може бути правдою, але як бути з бібліотекою, яку ви використовуєте, або іншим розробником, який більше не працює у вашій компанії? Чи можете ви гарантувати, що ця проблема ніколи не відбудеться? Єдиний спосіб гарантувати це - використовувати інший метод серіалізації.
1L
" не є коректною.