This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
A collection of examples with different topics:
The BookStore Demo is a fully fledged sample application. It shows how to design an application with MicroStream from the ground up.
If you want to compare MicroStream with a database of your choice, it can be done with following project, which is based on the BookStore Demo.
Combination of two great frameworks.
Further reading:
This example shows how to effectively use MicroStream storage with Android RecyclerView.
Further reading:
This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
Although most types in the JDK or any other Java library will work with MicroStream, there is a bunch of specialized type handlers for the most commonly used types. They are optimized to reduce memory overhead and increase performance.
The following list describes all types for which special type handlers are implemented. All other types are analyzed generically.
*) Most collections above are handled in a generic way. If you want a more optimized version of JDK collection handlers, you can utilize the provided module persistence.binary.jdk8
.
Primitive Types
All primitive types and arrays thereof
java.lang
java.math
java.util
java.util.regex
java.io
java.nio.file
java.net
java.sql
java.util
java.util.concurrent
Feature | Supported | Note |
Classes |
Classes without default constructor |
Abstract classes / Interfaces | Perfectly handleable as types, but there can never be instances to be persisted in the first place. |
Inner classes |
Anonymous inner classes |
Primitives |
References |
Final fields |
Static fields | Not supported since they are outside of an entity graph / a database, i.e. potentially shared by multiple graphs. |
Constant primitives | No sense in persisting those. These are just plain trivial values outside of an entity graph / a database. |
Constant instances | Must be registered for loading to update them instead of creating independent new instances. |
Primitive arrays |
Object arrays |
Multi dimensional arrays | Technically the same as object arrays as every array is an object itself. |
JDK value types (String, Number types, Date, File, Locale, Optional, ...) | Optimized handling via custom TypeHandlers. |
Collections | Via generic handling logic (List, Set, Map, etc.). Optimal handling required tailored TypeHandler (e.g. correctly handling loadFactor in java.util.HashMap) |
Nested Collections |
JVM system-tied classes (Thread, ClassLoader, WeakReference, ...) | Technically handleable, but handling system-instances could cause fatal problems (e.g. start a Thread just from loading data), so it is intentionally disabled. |
JVM external-tied classes (IO-Streams, FileChannel, ...) | Technically handleable, but external dependencies could cause fatal problems (e.g. existence of a referenced file), so it is intentionally disabled. |
Feature | Supported | Note |
Enums | Automatically handled as constant instances to maintain referential integrity / identity. |
Enums with mutable state |
Enums anonymous subclasses |
Feature | Supported | Note |
Lambdas | Type-handleable in theory. But JVM is not able to resolve its own type definitions for lambdas. |
Feature | Supported | Note |
Records | Records are mere syntax sugar for classes. |