# PersistenceEagerStoringFieldEvaluator

{% hint style="warning" %}
**This is the manual for older MicroStream versions (Version < 5.0).**

**The new documentation (Version >= 5.0) is located at:**

[https://docs.microstream.one/](https://docs.microstream.one/manual)
{% endhint %}

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](https://manual.docs.microstream.one/2.1/data-store/storing-data/lazy-eager-full) 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.

```java
public class CustomEagerStoringFieldEvaluator 
	implements PersistenceEagerStoringFieldEvaluator 
{
	@Override
	public boolean isEagerStoring(Class<?> clazz, Field field) 
	{
		if(clazz == MyClass.class && field.getName() == "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.

```java
EmbeddedStorageManager storage = EmbeddedStorage        		
    .Foundation(Storage.ConfigurationBuilder()         				
        .setStorageFileProvider(Storage.FileProvider(WORKINGDIR))         				
        .createConfiguration())
    .onConnectionFoundation(f ->
    {
        f.setReferenceFieldEagerEvaluator(new CustomEagerStoringFieldEvaluator());
    })
    .start(ROOT);
```
