java - db4o - 计算数据库中的总记录数?

标签 java db4o

我正在使用 db4o,想知道如何获取数据库中对象的总数?没有明确的方法来使用 API;但是,我可以编写一个查询来简单地计算所有对象,但我希望有一种更直接的方法来做到这一点。

沃尔特

最佳答案

有两种方法:

第一个是查询类型对象,然后获取计数:

  int numberOfObjects = container.query(Object.class).size();

但是这可能很慢,因为查询将构造所有对象的结果列表。在大型数据库中这可能需要时间。

第二个是读取所有存储的类的元数据并汇总计数。这肯定要快得多:

    int numberOfObjects = 0;
    for(StoredClass storedClass : container.ext().storedClasses()){
        // Filter out db4o internal objects
        // and filter out object which have a parent-class, because these are in the count of the parent
        if(!storedClass.getName().startsWith("com.db4o") &&
                null==storedClass.getParentStoredClass()) {
            numberOfObjects += storedClass.instanceCount();
        }
    }
    System.out.println("Number of objects stored "+numberOfObjects);

请注意,它还报告 db4o 内部类。所以我把它们过滤掉。

关于java - db4o - 计算数据库中的总记录数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5439798/

相关文章:

java - 线程中出现异常 "main"java.lang.UnsupportedOperationException

android - 在Android Studio上使用lib db4o

oop - 如何在对象数据库中设计多对多关系?

java - 使用 Rest-Assured 和 java 从 JSON 响应获取特定数据

java - 带有 Keycloak 的 Spring 应用程序返回 401 错误

java - Spring 和 JSR 303 验证。如何仅验证某些属性?

Java:如何在字符串列表中找到最可能的字符串?

c# - linq to db4o 中的 Lambda 语法?

java - 如何处理节点共享多个 BNO 的用例

java - DB4O 递归删除,它实际上是如何工作的?