2009-10-15 2 views
4

Задача домашней работы требует функции для хранения выбранной пользователем видеоигры. Это небольшой школьный проект, и мне было интересно, как лучше всего хранить информацию. Программа должна получить доступ к заказам видеоигр, но я думаю, что база данных немного раздута для такой небольшой задачи.Загрузки видеоигр datastore

Что вы хотите сделать?

+2

Это контекстно-зависимый вопрос, который почти всегда зависит от конкретных данных, которые вы пытаетесь сохранить. – Kai

ответ

7

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

Обычно это простой CSV-подобный файл с некоторыми парами значений ключа.

В зависимости от типа информации, необходимой для сохранения XML, может возникнуть путь.

Кроме того, если информация требуется сохранить только на короткий промежуток времени (один запуск приложения), а объем сохраненных данных относительно невелик, просто сохранение всего его в памяти, безусловно, сделает программы намного быстрее и, как правило, легче писать.

+0

Я с jjnguy. Это всего лишь школьный проект, и OP правилен тем, что использование базы данных происходит сверху; плоские файлы отлично подходят для такого рода вещей. Возможно, вы захотите также проверить Berkeley DB для такого рода вещей; Вы можете сериализовать свои объекты на постоянной карте, используя его. – Adamski

6

Кай право, хотя хороший способ управлять информацией о бронировании видеоигр будет по-прежнему небольшой базы данных (попробуйте sqlite). Я уверен, что вы хотите связать информацию о бронировании с пользователем, и поэтому любые отношения будут также оправдывать использование базы данных.

+0

Хотя текстовые файлы различных видов могут работать, я считаю, что это так мало дополнительных усилий для использования БД, я бы это сделал. – djna

+0

HSQLDB и SQLite довольно просты в настройке и использовании; Я также предлагаю использовать базу данных. Если вы используете плоские файлы для этого проекта, вы, вероятно, просто закончите реализацию чего-то похожего на базу данных в любом случае с плоским файлом для каждой таблицы - у вас просто не будет приятных возможностей API и запросов, которые предоставляются база данных. – rob

0

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

Я бы сказал, CSV или SQLite.

1

Это может быть полезно, если бы вы были немного более конкретными, но ...

Я думаю, что назначение пытается заставить вас сделать, это понять, что программа не будет знать типы данных и размер данные (строка и столбец) до времени выполнения.

Из того, что вы говорите мне, я бы попробовал моделировать таблицу через изменяемый список. Запрограммируйте его в общем случае, чтобы вы могли выполнить замену:

Список> table = new ArrayList>();

Это просто видеоигры? Если это так, я бы создал объект VideoGame, сохранил такие поля, как имя, создатель, система и т. Д., И поместил его в изменяемую структуру данных и wallah! Все зависит от ваших операций, которые вы будете выполнять в списке ... вы ищете и сортируете? Вы заботитесь о времени поиска?

Если вы хотите, чтобы поиск был O (1), или в неточном термине мирян, «около одной инструкции», подумайте об использовании Карты. Если ключ является именем видеоигры, он возвращается в O (1). Если имеется несколько записей, рассмотрите возможность использования List в качестве значения.

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

Надеюсь, это поможет.

2

Я думаю, что самым простым решением является сериализация объекта, который хранит ваши данные, а затем записывается на диск (выберите любое расширение файла, чтобы вы были счастливы). Просто прочитайте файл, и у вас есть свой объект!

FileInputStream fis = new FileInputStream(filename); 
ObjectInputStream in = new ObjectInputStream(fis); 
Foo f = (Foo)in.readObject(); 

Вот отличный учебник для начинающих на весь процесс: Discover the secrets of the Java Serialization API

+1

Очень легко сделать вашу жизнь трудной для вашего будущего с сериализацией. –

+0

Правда, это совсем не «реальное» решение, но оно отлично работает для ограниченного времени жизни (см .: школьные проекты). – perimosocordiae

+0

Зачем это делать из-за использования сериализации? – GeoffreyF67

1

Создайте свой собственный текстовый файл (CSV и т.д.)
Pro: Легко редактировать
Con: Вы должны сделайте все, что выберете сами. И составить формат файла. Вероятно, у вас окажется плохо написанная база данных. Совершенно плохое изменение объектов может стать настоящей болью.

Сериализация объектов (в любом двоичном или XML)
Pro: Что-то еще обрабатывает сортировочная (встроенная с двоичным и XML при использовании «бобов»)
Con: Изменение между версиями Java может сломать двоичную форматированную сериализацию. XML требует бинов.

Пользовательские XML-файл
Pro: XML хорошо поддерживается в Java
Con: Вы, вероятно, в конечном итоге получить пугаться существующих сортировочных API, и добавить собственные (с помощью API-XML Java один надежды). Затем вы оказываетесь в том же пространстве, что и текстовые файлы (плохо написанная база данных).

Embedded Database
Pro: SQL сексуальна.
Con: Если вы уже знаете SQL и/или используете ORM-продукт, ORM может быть немного болью.

Я бы, скорее всего, ввел встроенную базу данных + JPA.

Смежные вопросы