This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
// Initialize a storage manager ("the database") with purely defaults.
final EmbeddedStorageManager storageManager = EmbeddedStorage.start();
// print the last loaded root instance,
// replace it with a current version and store it
storageManager.setRoot("Hello World! @ " + new Date());
// shutdown storage
This simplest example will create a new storage if no existing storage is found, if a existing storage is found it will be loaded (this is all done at line 2 in the example above).
In line 6 the current storage's content is printed.
Line 7 assigns some data to the storage, replacing existing data if there is some.
In line 8 everything gets stored.
When using MicroStream, your entire database is accessed starting at a root instance. This instance is the root object of an object graph that gets persisted by the MicroStream storage logic. While the root instance can be of any type (for example just a collection or an array), it is a good idea to define an explicit root type specific for the application. In this simple example, it is a class called
DataRoot, which wraps a single
public class DataRoot
private String content;
public String getContent()
public void setContent(final String content)
this.content = content;
public String toString()
return "Root: " + this.content;
More about root instances:
The following code is all that is required to setup a an application backed by a MicroStream database. The application's convenience root instance is defined and an
EmbeddedStorageManagerinstance, linked to the root, is created (and its database managing threads are started). This is a fully operational Java database application.
// Application-specific root instance
final DataRoot root = new DataRoot();
// Initialize a storage manager ("the database") with the given directory.
final EmbeddedStorageManager storageManager = EmbeddedStorage.start(
root, // root object
Paths.get("data") // storage directory
// Set content data to the root element, including the time to visualize
// changes on the next execution.
root.setContent("Hello World! @ " + new Date());
// Store the modified root and its content.
This call is all that is necessary to store data in the simplest case.
Best practice is to safely shutdown the storage manager by simply calling:
storageManager.storeRoot()is a special case method that always stores the root object. If you want to store any other object than the root itself, just call