Skip to content

Cache

Three caches used:

  • Scheme object mapping cache
  • Repository descriptors
  • Generics cache

Scheme object mapping cache

When predefined PackageSchemeModule or AutoScanSchemeModule object mapping modules used or ObjectSchemeInitializer used directly, mapped objects are cached.

The is required to avoid redundant computations for registering same types: if models use some base class, then base class would be registered multiple times (for each entity) without cache.

Normally, cache should not cause problems, because scheme is initialized on application start and doesn't changed anymore.

Cache may be cleared at any time:

@Inject ObjectSchemeInitializer initializer;
...
initializer.clearModelCache();

Repository descriptors

Repository descriptors computed on first repository method execution and cached to speed up future method executions.

If you use JRebel or other class reloading tool (maybe some other reason) you will need to disable descriptors caching.

To do it set system property or environment variable:

ru.vyarus.guice.persist.orient.repository.core.MethodDescriptorFactory.cache=false

Or from code:

MethodDescriptorFactory.disableCache();

Also you can clear cache manually (on instance):

@Inject MethodDescriptorFactory factory;
...
factory.clearCache()

Note

Disabling descriptors case, also disables generics resolution cache.

Generics cache

External library used for generics resolution: generics-resolver. It maintains resolved class generics cache (to avoid resolution for same classes).

Note

Disabling descriptors cache will disable generics cache, so usually you don't need to know about it.