java - 如何从mapDB数据库检索数据,而不是每次都覆盖它?

标签 java gwt mapdb

我正在开发一个与 Doodle.com 非常相似的 GWT Web 应用程序

我需要在数据库中存储一些有关事件和用户的信息。 这是一个大学考试项目,我们必须使用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:

Creates or open database stored in file.

但是每次都会创建一个新数据库,我们看到使用一些断点并尝试从数据库中提取数据,每次只返回一条记录。

如果有人可以提供帮助,我将不胜感激。谢谢

最佳答案

有时会调用 db.commit() 。 Mapdb有事务,未提交的数据被丢弃。

关于java - 如何从mapDB数据库检索数据,而不是每次都覆盖它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24715971/

相关文章:

java - 仅在 gwt 编译中包含 jar,而不是在 WEB-INF/lib 中

java - MapDB 闪存友好性

java - hadoop java : how to know that end of reducer input is reached?

java - 赋值的左侧必须是变量的问题

java - 如何减少这段代码中的 if else 语句?

java - 阻止事件在 GWT 中冒泡

java - 碧 Jade 报告 : Getting JRRuntimeException: Error creating SAX parser

java - 在 GWT 项目中继承外部 java 源

java - 将其存储在mapdb中的最佳方法?

java - 有序持久缓存