Interface MappedBatchLoader<K,V>
-
- Type Parameters:
K
- type parameter indicating the type of keys to use for data load requests.V
- type parameter indicating the type of values returned
public interface MappedBatchLoader<K,V>
A function that is invoked for batch loading a map of data values indicated by the provided set of keys. The function returns a promise of a map of results of individual load requests.There are a few constraints that must be upheld:
- The keys MUST be able to be first class keys in a Java map. Get your equals() and hashCode() methods in order
- The caller of the
DataLoader
that uses this batch loader function MUST be able to cope with null values coming back as results
This form is useful when you don't have a 1:1 mapping of keys to values or when null is an acceptable value for a missing value.
For example, let's assume you want to load users from a database, you could probably use a query that looks like this:
SELECT * FROM User WHERE id IN (keys)
Given say 10 user id keys you might only get 7 results back. This can be more naturally represented in a map than in an ordered list of values from the batch loader function.
When the map is processed by the
DataLoader
code, any keys that are missing in the map will be replaced with null values. The semantic that the number ofDataLoader.load(Object)
requests are matched with and equal number of values is kept.This means that if 10 keys are asked for then
DataLoader.dispatch()
will return a promise of 10 value results and each of theDataLoader.load(Object)
will complete with a value, null or an exception.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.util.concurrent.CompletionStage<java.util.Map<K,V>>
load(java.util.Set<K> keys)
Called to batch load the provided keys and return a promise to a map of values.
-