4.2. 埋め込みキャッシュを使用したオンデマンドのデータ変換
埋め込みキャッシュには、application/x-java-object のデフォルトのリクエストエンコーディングと、キャッシュに設定したメディアタイプに対応するストレージエンコーディングがあります。つまり、Data Grid はアプリケーションからの POJO をキャッシュのストレージエンコーディングにマーシャルし、POJO をアプリケーションに返します。複雑なシナリオによっては、AdvancedCache API を使用して POJO との間のデフォルト変換を他のエンコーディングに変更できます。
以下の例では、withMediaType() メソッドを使用して、オンデマンドで application/json として値を返します。
MediaType を使用した高度なキャッシュ
DefaultCacheManager cacheManager = new DefaultCacheManager();
// Encode keys and values as Protobuf
ConfigurationBuilder cfg = new ConfigurationBuilder();
cfg.encoding().key().mediaType("application/x-protostream");
cfg.encoding().value().mediaType("application/x-protostream");
cacheManager.defineConfiguration("mycache", cfg.build());
Cache<Integer, Person> cache = cacheManager.getCache("mycache");
cache.put(1, new Person("John","Doe"));
// Use Protobuf for keys and JSON for values
Cache<Integer, byte[]> jsonValuesCache = (Cache<Integer, byte[]>) cache.getAdvancedCache().withMediaType("application/x-protostream", "application/json");
byte[] json = jsonValuesCache.get(1);
JSON 形式で返される値
{
"_type":"org.infinispan.sample.Person",
"name":"John",
"surname":"Doe"
}