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:
Implementing the PersistenceEagerStoringFieldEvaluator interface allows you to handle the eager/lazy storing behavior of any known member. The default implementation of the MicroStream engine threads all fields as lazy storing. See for details on lazy and eager storing.
The PersistenceEagerStoringFieldEvaluator has only one method to be implemented: public boolean isEagerStoring(Class<?> t, Field u) return true if the field has to be eager, otherwise return false.
To register the customized PersistenceEagerStoringFieldEvaluator add it using the one.microstream.persistence.types.PersistenceFoundation
.setReferenceFieldEagerEvaluator(PersistenceEagerStoringFieldEvaluator) method during the storage initialization.
public class CustomEagerStoringFieldEvaluator
implements PersistenceEagerStoringFieldEvaluator
{
@Override
public boolean isEagerStoring(Class<?> clazz, Field field)
{
if(clazz == MyClass.class && field.getName() == "eagerField")
{
return true;
}
return false;
}
}EmbeddedStorageManager storage = EmbeddedStorage
.Foundation(Storage.ConfigurationBuilder()
.setStorageFileProvider(Storage.FileProvider(WORKINGDIR))
.createConfiguration())
.onConnectionFoundation(f ->
{
f.setReferenceFieldEagerEvaluator(new CustomEagerStoringFieldEvaluator());
})
.start(ROOT);This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
In addition to the methods for legacy type mapping described in chapter Legacy Type Mapping there is also the possibility to implement custom legacy type handlers. Those handlers are the most flexible way to do the mapping from old to new types.
The basic interface that has to be implemented is one.microstream.persistence.types.PersistenceLegacyTypeHandler.
Fortunately the standard persistence implementation provides the abstract class one.microstream.persistence.binary.types.BinaryLegacyTypeHandler.AbstractCustom that should be sufficient to start with a custom implementation in most cases.
This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
Custom Type Handler allow taking control over the storing and loading procedure of specific java types. This is useful to optimize the performance for storing complex objects or in the rare case that it is not possible to store a type with the default type handlers.
Suitable base class to start the implementation of a custom type handler for the Microstream standard binary storage implementation are:
one.microstream.persistence.binary.internal.AbstractBinaryHandlerCustomValue
for simpler custom type handling in case only value have to be stored
or
one.microstream.persistence.binary.internal.AbstractBinaryHandlerCustom
if the object own references that have to be persisted too.
The custom type handler must be registered in the CustomTypeHandlerRegistry to enable it:
mbeddedStorageManager storage = EmbeddedStorage
.Foundation(WORKINGDIR)
.onConnectionFoundation(f->
f.registerCustomTypeHandlers(new CustomBufferedImageHandler()))
.start(ROOT);