ObjectBox Mobile Database
Mobile App developers trust ObjectBox. Join over 500,000+ developers that already use ObjectBox. We help developers build faster apps, faster. Check out our bindings for Android and iOS: Java, Kotlin, Swift, and Flutter / Dart. Ensure consistency as you scale: The ObjectBox Mobile database provides serializable, ACID-compliant object-oriented APIs that perform at any scale.
10x faster than other Mobile Databases
CRUD Operations | Entities per second
All our benchmarks are Open Source. Check it out on GitHub and let us know what you think. We strive for fair and transparent benchmarks.
Intuitive APIs developers love
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @Entity public class Person { @Id long id; String firstName; ... } // MyObjectBox is generated by ObjectBox BoxStore boxStore = MyObjectBox.builder() .androidContext(YourApp.this).build(); Box<Person> box = boxStore.boxFor(Person.class); Person person = new Person("Joe", "Green"); long id = box.put(person); // Create Person person = box.get(id); // Read person.setLastName("Black"); box.put(person); // Update box.remove(person); // Delete |
1 2 3 4 5 6 7 8 | @Entity data class Person( @Id var id: Long = 0, var firstName: String, var lastName: String ) val box = boxStore.boxFor<Person>() box.put(Person(0, "Joe", "Green")) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Person: Entity { var id: Id<person> = 0 var firstName: String var lastName: String ... } let store = Store(directoryPath: aPermanentPath) let box = store.box(for: Person.self) let newPerson = Person(firstName: "Joe", lastName: "Green") let id = try! box.put(newPerson) // Create let person = box.get(id) // Read person.lastName = "Black" try! box.put(person) // Update try! box.remove(person) // Delete let query = box.query { return Person.firstName == "Joe" && Person.lastName.startsWith("B") } let persons: [Person] = query.find() </person> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @Entity() class Person { int id; String firstName; String lastName; } // Note: in Flutter you also need to specify a directory, see examples. final store = Store(getObjectBoxModel()); final box = store.box<Person>(); var person = Person() ..firstName = "Joe" ..lastName = "Green"; final id = box.put(person); // Create person = box.get(id); // Read person.lastName = "Black"; box.put(person); // Update box.remove(person.id); // Delete |
We’re on a mission to bring joy and delight to app developers
Synchronize Data Seamlessly
Mobile users expect a seamless experience from their apps – whether online or offline. Make sure that data is synchronized between devices and / or the cloud or an on-premise server with ObjectBox Sync, the fastest database Sync solution for Mobile and IoT apps.
ObjectBox enables mobile app developers to devote their time to what makes their apps stand out without worrying about storing and retrieving data.
Mobile Database Features
ObjectBox is an embedded, object-oriented database for Mobile Apps and IoT. Our NoSQL, ACID-compliant DB is 10x faster than any alternative and takes only 1/10th of the code compared to SQLite. On top, we built a data synchronization solution that takes care of seamlessly syncing data between the phone and cloud, get in touch to start Syncing today.
Our motivation to build ObjectBox was to deliver the best possible performance, outperforming every embedded database we’ve ever tested.
Objectbox is not an ORM, it is build for objects from the ground up, which means no more rows, columns, or SQL. Our concise API is easy to learn and only requires a fraction of the code compared to SQLite.
With ObjectBox, simply query for objects with checks at compile times; no more typos causing crashes at runtime.
Object references / relationships are build-in, native references.
Reacting to data changes is simple and powerful. Use reactive data observers from ObjectBox or integrate with RxJava.
ObjectBox supports Android, plain-Java, Kotlin (Linux and Windows), POSIX, MacOS, iOS, Go, Python, Dart/Flutter, and C/C++.
With our multi-platform approach, you can run plain unit tests on the desktop (no Robolectric, on instrumentation tests) with a real database in milliseconds.
ACID (Atomic, Consistent, Isolated, Durable) properties and Multiversion Concurrency Control (MVCC) provide you with safe transactions and parallelism.
Objects returned by ObjectBox with in all threads. No strings attached.
ObjectBox takes care of new object versions with added, removed and renamed properties. Automatic schema migration removes that chore for developers.
greenDAO is an Object-Relational-Mapper (ORM). If you are already using greenDAO, you can seamlessly switch to ObjectBox using greenDAO compat APIs for ObjectBox. If you are using another ORM or DB, switching to ObjectBox is easy.
BATTLE TESTED
From beta onward, ObjectBox has been running on 30k+ apps, and millions of devices. Of course, we’ve also run over 1,000 individual internal unit tests and empower apps with more than 20 million installs.
Developers Love ObjectBox
Thanks for such a powerful database solution, I can’t imagine my life without ObjectBox now
Vas
MathTrainer – build with ObjectBox
Terrific job, ObjectBox is marvelous solution, it almost makes data persistence invisible. I was really astonished to see how the code shrunk before my eyes when I replaced realm. I am still amazed how simple all of it is.
Cris
Keep up the amazing work! As I found eventbus some time ago I was like: HOLY these guys know where the “problem” is and try to find a brilliant solution to it without making things complicated. Anyone can clearly see that this approach is reflected in ObjectBox again.
Pack