By default db4o uses the JdkReflector . As alternative you can create your own reflector and use it with db4o. In order to do so you need to implement the Reflector interface. And then pass an instance of your implementation to db4o.
Here's an example of a logging reflector. Its only difference from standard reflector is that information about loaded classes is outputted to console:
class LoggerReflector implements Reflector{ private final Reflector readReflector; public LoggerReflector() { this(new JdkReflector(Thread.currentThread().getContextClassLoader())); } public LoggerReflector(Reflector readReflector) { this.readReflector = readReflector; } @Override public void configuration(ReflectorConfiguration reflectorConfiguration) { readReflector.configuration(reflectorConfiguration); } @Override public ReflectArray array() { return readReflector.array(); } @Override public ReflectClass forClass(Class aClass) { System.out.println("Reflector.forClass("+aClass+")"); return readReflector.forClass(aClass); } @Override public ReflectClass forName(String className) { System.out.println("Reflector.forName("+className+")"); return readReflector.forName(className); } @Override public ReflectClass forObject(Object o) { System.out.println("Reflector.forObject("+o+")"); return readReflector.forObject(o); } @Override public boolean isCollection(ReflectClass reflectClass) { return readReflector.isCollection(reflectClass); } @Override public void setParent(Reflector reflector) { readReflector.setParent(reflector); } @Override public Object deepClone(Object o) { return new LoggerReflector((Reflector) readReflector.deepClone(o)); } }