Что лучший способ состоит в том, чтобы сохранить данные в Настольном приложении Java?

У меня есть большое дерево Объектов Java в моем Настольном приложении, и пытаюсь выбрать лучший способ сохранить их как файл к файловой системе.

Некоторые мысли, которые я имел, были:

  • Прокрутите мое собственное использование сериализатора DataOutputStream: Это дало бы мне самый большой контроль того, что было в файле, но за счет микроуправления им.

  • Прямое старое использование Сериализации ObjectOutputStream и его различные связанные классы: я не продаюсь на нем хотя, так как я нахожу данные хрупкими. Изменение структуры любого объекта повреждает сериализированные экземпляры его. Таким образом, я привязываюсь к тому, что, кажется, ужасный кошмар управления версиями.

  • Сериализация XML: это не является столь же хрупким, но это значительно медленнее это прямо сериализация. Это может быть преобразовано за пределами моей программы.

  • JavaDB: я рассмотрел это, так как я - удобная запись приложения JDBC. Различие здесь - то, что экземпляр базы данных только сохранился бы, в то время как файл был открыт или сохранен. Это не симпатично, но... это действительно предоставляет себя миграции на центральную серверную архитектуру, если потребность возникает позже, и это представляет возможность quering модель данных более простым способом.

Мне любопытно видеть то, что думают другие люди. И я надеюсь, что скучал по некоторым очевидный, и более простой подход, чем те выше.


Вот еще некоторые опции, отобранные из ответов ниже:

  • Объектная база данных - Имеет значительно меньше инфраструктуры, чем ORM приближается и работает быстрее, чем подход XML. спасибо aku
10
задан Jon Lin 13 June 2012 в 17:31
поделиться

6 ответов

db4objects мог бы быть лучшим выбором

3
ответ дан 3 December 2019 в 21:24
поделиться

Я пошел бы для Вашей заключительной опции JavaDB (распределение Sun Derby) и использовал бы объектный реляционный слой, любят, в спящем режиме или iBatis. Используя первые три средства подходов Вы собираетесь провести больше времени, создающего механизм базы данных, чем разработка функций приложения.

5
ответ дан 3 December 2019 в 21:24
поделиться

XStream из codehaus.org

Сериализация XML / десериализация в основном без кодирования. Можно использовать аннотации для тонкой настройки его. Работа хорошо в двух проектах, где я работаю.

Посмотрите мою презентацию группы пользователей по http://cjugaustralia.org/?p=61

1
ответ дан 3 December 2019 в 21:24
поделиться

Взгляните на, в спящем режиме как более простой способ взаимодействовать через интерфейс к базе данных.

4
ответ дан 3 December 2019 в 21:24
поделиться

По моему опыту, Вы - вероятно, более обеспеченное использование встроенной базы данных. SQL, в то время как менее, чем прекрасный, обычно намного легче, чем разработка формата файла, который работает хорошо и надежен.

Я не использовал JavaDB, но мне везло с H2 и SQLite. SQLite является библиотекой C, что означает немного больше работы с точки зрения развертывания. Однако это обладает преимуществом хранения всей базы данных в единственной, межплатформенной библиотеке. В основном это - предварительно упакованный, универсальный формат файла. SQLite был так полезен, что я даже начал использовать его вместо текстовых файлов в сценариях.

Будьте тщательным использованием, в спящем режиме, если Вы работаете с небольшой проблемой персистентности. Это добавляет большую сложность и библиотеку наверху. Будьте в спящем режиме действительно хорошо, если Вы работаете с большим количеством таблиц, но это, вероятно, будет громоздким, если Вам только будут нужны несколько таблиц.

4
ответ дан 3 December 2019 в 21:24
поделиться

Я думаю, что это зависит от того, в чем Вы нуждаетесь. Давайте посмотрим опции:

1) Descarded imediatelly! Я даже не выровняю по ширине.:)

2) Если Вы нуждаетесь в простой, быстрой, персистентности с одним методом, придерживаетесь ее. Это сохранит полный график данных, как это! Остерегайтесь того, сколько времени Вы будете поддерживать сохраненные объекты. Как самостоятельно указано, управление версиями может быть проблемой.

3) Медленнее, чем (2), нуждайтесь в дополнительном коде, и может быть отредактирован пользователем. Я только использовал бы его, данные, как предполагается, используются клиентом на другом языке.

4) Если необходимо запросить данные в так или иначе, придерживаться решения DB.

Ну, я думаю, что Вы уже ответили на свой вопрос :)

0
ответ дан 3 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: