Существует два способа:
Первый - запросить объект типа и затем получить счет:
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.Поэтому я отфильтровываю их.