Answers to Java, Kotlin, and Android specific ObjectBox questions
Yes. ObjectBox comes with strong relation support and offers features like “eager loading” for optimal performance.
The ObjectBox plugin only looks for entities in the current module, it does not search library modules. However, you can have a separate database (
MyObjectBox file) for each module. Just make sure to pass different database names when building your BoxStore.
It depends. Internally and in the C API, ObjectBox does zero-copy reads. Java objects require a single copy only. However, copying data is only a minor factor in overall performance. In ObjectBox, objects are POJOs (plain objects), and all properties will be properly initialized. Thus, there is no run time penalty for accessing properties and values do not change in unexpected ways when the database updates.
No. The objects you get from ObjectBox are POJOs (plain objects). You are safe to pass them around in threads.
Android (4.0 and above), Linux (64 bit), Windows (64 bit), macOS, iOS. ObjectBox comes in flavors for Java, Go, C, and Swift.
Yes, you can ObjectBox on the desktop/server side. Contact us for details if you are interested in running ObjectBox in client/server mode or containerized!
Generally speaking: Yes. You can run the ObjectBox database on any IoT device that runs Linux. We also offer Go and C APIs.
If you only do a rename on the language level, ObjectBox will by default remove the old and add a new entity/property. To do a rename, you must specify the UID.
Around 1.5 MB if you package all CPU architectures. If you split your APK by ABI or use App Bundle only around 0.5 MB. More importantly, ObjectBox adds little to the APK method count since it’s mostly written in native code. Details to follow, for uncompressed library sizes see here.
Yes. ObjectBox stores all data in a single database file. Thus, you just need to prepare this DB file and copy it to the correct location on the first start of your app (before you touch ObjectBox’s API). The DB file is called
data.mdb and is typically located in a subdirectory called
objectbox (or any name you passed to BoxStoreBuilder). On Android, the DB file is located inside the app’s files directory inside
objectbox/<yourname> if you assigned the custom name
<yourname> using BoxStoreBuilder.
Questions not related to Java, Kotlin or Android are answered in the general ObjectBox FAQ.
If you believe to have found a bug or missing feature, please create an issue. https://github.com/objectbox/objectbox-java/issues
If you have a usage question regarding ObjectBox, please post on Stack Overflow. https://stackoverflow.com/questions/tagged/objectbox