У меня есть большое дерево объектов Java в моем настольном приложении, и я пытаюсь решить, как наилучшим образом сохранить их как файл в файловой системе.
Некоторые мысли, которые у меня были, были:
-
Сбросьте свой собственный сериализатор с помощью DataOutputStream. Это даст мне лучший контроль над тем, что было в файле, но ценой микроменеджмента.
-
Прямая старая сериализация с использованием ObjectOutputStream и ее различных связанных классов. Я не продаюсь на этом, так как я нахожу данные хрупкими. Изменение любой структуры объекта ломает сериализованные экземпляры. Поэтому я заперт в том, что кажется ужасным кошмаром в версии.
-
Сериализация XML: она не такая хрупкая, но значительно медленнее, чем прямолинейная сериализация. Он может быть трансформирован вне моей программы.
-
JavaDB. Я подумал об этом, так как мне удобнее писать приложения JDBC. Разница здесь в том, что экземпляр базы данных будет сохраняться только при открытии или сохранении файла. Это не очень, но... он приспосабливается к переходу на центральную архитектуру сервера, если это возникнет позже, и это дает возможность запросить datamodel более простым способом.
Мне любопытно посмотреть, что думают другие люди. И я надеюсь, что пропустил какой-то очевидный и более простой подход, чем те, что были выше.
Вот еще несколько вариантов, выбранных из ответов ниже:
- База данных объектов. Обладает значительно меньшей инфраструктурой, чем ORM, и работает быстрее, чем XML-подход. спасибо aku