Я разрабатываю веб-приложение GWT, очень похожее на Doodle.comКак получить данные из базы данных mapDB, не переопределяя их каждый раз?
Мне нужно хранить в базе данных информацию о событиях и пользователях. Это проект для университетского экзамена, и мы должны использовать mapDB для постоянных данных. Проблема заключается в том, что каждый раз, когда вызывается метод saveEventsToDB()
, новая база данных перезаписывает ранее созданную.
Это saveEventsToDB()
метод:
public void saveEventsToDB(Event event) {
DB eventsDB = DBMaker.newFileDB(new File("eventsDB")).closeOnJvmShutdown().make();
Map<Integer, Event> map = eventsDB.getTreeMap("Events");
map.clear();
Set<Integer> keys = map.keySet();
int id=0;
for(int key : keys) {
id++;
}
map.put(id+1, event);
eventsDB.commit();
eventsDB.close();
}
Я уверен, что это вызвано этой строки кода:
DB eventsDB = DBMaker.newFileDB(new File("eventsDB")).closeOnJvmShutdown().make();
Но это было в коде примера, что наш профессор дал нам для mapDB.
mapDB документация говорит, что newFileDB
:
Создает или открыть базу данных хранится в файле.
Но новая база данных создается каждый раз, мы видели это, используя некоторые точки останова и пытаясь вырезать данные из db, только одна запись была возвращена каждый раз.
Если кто-то может помочь, это было бы очень признательно. Благодаря
Почему вы делаете map.clear()? – Hunsu