2011-09-14 6 views
0

Скажем, у меня довольно простое Java-приложение, которое требует способа хранения некоторых пользовательских настроек. XML не очень хорошее решение, так как я хочу хранить их в двоичной форме. Итак, что было бы лучшим решением в этом случае, встроенной базой данных (например, Apache Derby) или просто старой сериализацией?
Я знаю, что это две совершенно разные вещи, но оба позволяют сохранить состояние приложения. Итак, что бы вы выбрали и почему?Сериализация и встроенная база данных для простого автономного приложения

Редактировать
Насколько хранить простые пользовательские настройки идти, .properties или XML-файлы в порядке, я с вами согласен. Но что, если я хочу хранить пароли или некоторые данные, относящиеся к конкретным приложениям?

+3

«так как я хочу хранить их в двоичной форме»? Зачем? Зачем это сложно? –

+0

хорошо, это не общий случай, но, возможно, я хочу, чтобы пользователь не редактировал эти настройки – jFrenetic

+0

«запретить пользователю редактировать эти настройки». Забавно. Какова настоящая причина? Серьезно, любой может настроить двоичный файл с помощью редактора байтового уровня или небольшого скрипта Python. –

ответ

2

Поскольку Apache Derby является встраиваемой реляционной базой данных, имеет смысл использовать его для хранения и обработки реляционных данных. Использование встроенного db для сохранения нескольких пользовательских настроек только немного перебор.

Если бы это был я, я бы использовал простую сериализацию пары ключ/значение для постоянных пользовательских настроек.

+0

Вы описали некоторые очень важные аспекты. Например, «использовать базу данных для реляционных данных» и «не использовать базу данных для хранения всего нескольких настроек». Я полностью согласен с тобой. Спасибо за ответ! – jFrenetic

3

Пользовательские настройки обычно хранятся в

  • свойства, используя свойства Формат файла
  • свойства, используя формат XML
  • предпочтения, используя Preferences API. Это имеет то преимущество, что вы сохраняете и читаете пользовательские и системные настройки для вас, не задумываясь о том, где их хранить, и т. Д. См. http://download.oracle.com/javase/1.4.2/docs/guide/lang/preferences.html
+0

Благодарим за упоминание API настроек. Я должен прочитать об этом. Это действительно распространено? Я никогда не сталкивался с этим раньше. Хотя я должен признать, что я разрабатываю в основном распределенные приложения, и я часто использовал RDBMS, свойства и файлы xml для хранения данных/параметров конфигурации. Но что, если я хочу сохранить состояние приложения, а не только некоторые пользовательские настройки (скажем, какой-то внутренний счетчик)? А также как насчет пароля? Думаю, на самом деле не стоит хранить такие данные в xml. – jFrenetic

+0

Если состояние приложения - это только некоторый внутренний счетчик, я не понимаю, почему API-интерфейс предпочтений не должен использоваться. Если он состоит из огромного графа объектов, то это другое дело. Пароль, хранящийся в XML-файле, текстовом файле, двоичном файле, базе данных, всегда является важной частью информации. Его следует просто не хранить без согласия пользователя и понимания риска. Но формат не имеет значения. –