Custom Storing Behavior

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 Lazy and Eager Storing 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.

public class CustomEagerStoringFieldEvaluator
	implements PersistenceEagerStoringFieldEvaluator
{
	@Override
	public boolean isEagerStoring(Class<?> clazz, Field field)
	{
		if(clazz == MyClass.class && field.getName().equals("eagerField")
		{
			return true;
		}

		return false;
	}
}

To register the customized PersistenceEagerStoringFieldEvaluator add it using the one.microstream.persistence.types.PersistenceFoundation.setReferenceFieldEagerEvaluator(PersistenceEagerStoringFieldEvaluator) method during the storage initialization.

NioFileSystem          fileSystem = NioFileSystem.New();

EmbeddedStorageManager storage    = EmbeddedStorage
	.Foundation(fileSystem.ensureDirectoryPath(WORKINGDIR))
	.onConnectionFoundation(f ->
	{
	    f.setReferenceFieldEagerEvaluator(new CustomEagerStoringFieldEvaluator());
	})
	.start(ROOT)
;
The full code for the example is on GitHub.