Asynchronously stores given key-value pair in cache only if cache had no previous mapping for it. If cache
previously contained value for the given key, then this value is returned. In case of
the value will be loaded from the primary node, which in its turn may load the value
from the swap storage, and consecutively, if it's not in swap,
from the underlying persistent storage. If value has to be loaded from persistent
method will be used.
If the returned value is not needed, method
always be used instead of this one to avoid the overhead associated with returning of the
If write-through is enabled, the stored value will be persisted to
CacheStore#put(Transaction, Object, Object) method.
This method is transactional and will enlist the entry into ongoing transaction
if there is one.