この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

セッションキャッシュの値の保存および取得

Cache.Session および Cache.SessionPartition クラスを使用してセッションキャッシュの値を管理します。パーティションの値を管理するには、Cache.Session クラスのメソッドを使用します。1 つのパーティションのキャッシュ値を管理する場合は、代わりに Cache.SessionPartition メソッドを使用します。

Cache.Session メソッド

セッションキャッシュに値を保存するには、Cache.Session.put() メソッドをコールして、キーと値を指定します。キー名は namespace.partition.key 形式にします。たとえば、名前空間が ns1、パーティションが partition1、キーが orderDate の場合、完全修飾された���ー名は ns1.partition1.orderDate になります。

次の例では、DateTime キャッシュ値をキー orderDate で保存します。次に、このスニペットは orderDate キーがキャッシュ内にあるかどうかをチェックし、ある場合はキャッシュからその値を取得します。

1// Add a value to the cache
2DateTime dt = DateTime.parse('06/16/2015 11:46 AM');
3Cache.Session.put('ns1.partition1.orderDate', dt);
4if (Cache.Session.contains('ns1.partition1.orderDate')) {
5    DateTime cachedDt = (DateTime)Cache.Session.get('ns1.partition1.orderDate');
6}

呼び出し元クラスのデフォルトパーティションと名前空間を参照するには、namespace.partition プレフィックスを省略して、キー名を指定します。

1Cache.Session.put('orderDate', dt);
2if (Cache.Session.contains('orderDate')) {
3    DateTime cachedDt = (DateTime)Cache.Session.get('orderDate');
4}

local プレフィックスは、組織に名前空間が定義されているかどうかに関係なく、コードが実行されている現在の組織の名前空間を示します。組織に ns1 という名前空間が定義されている場合、次の 2 つのステートメントは同等です。

1Cache.Session.put('local.myPartition.orderDate', dt);
2Cache.Session.put('ns1.myPartition.orderDate', dt);

インストール済み管理パッケージの local プレフィックスは、パッケージの名前空間ではなく、登録者組織の名前空間を参照します。キャッシュの put コールは、呼び出し元のクラスが所有していないパーティションでは許可されません。

メモ

put() メソッドには複数のバージョン (オーバーロード) があり、各バージョンが取るパラメータは異なります。たとえば、キャッシュ値を他の名前空間で上書きできないことを指定するには、このメソッドの最後のパラメータを true に設定します。次の例では、キャッシュ値の有効期間 (3,600 秒 = 1 時間) も設定し、任意の名前空間で値を使用できるようにしています。

1// Add a value to the cache with options
2Cache.Session.put('ns1.partition1.totalSum', '500', 3600, Cache.Visibility.ALL, true);

セッションキャッシュからキャッシュ値を取得するには、Cache.Session.get() メソッドをコールします。Cache.Session.get() はオブジェクトを返すため、戻り値を特定の型にキャストすることをお勧めします。

1// Get a cached value
2Object obj = Cache.Session.get('ns1.partition1.orderDate');
3// Cast return value to a specific data type
4DateTime dt2 = (DateTime)obj;

Cache.SessionPartition メソッド

1 つのパーティションのキャッシュ値を管理する場合は、代わりに Cache.SessionPartition メソッドを使用します。パーティションオブジェクトが取得できたら、キャッシュ値を追加および取得するプロセスは、Cache.Session メソッドを使用する場合と同様です。Cache.SessionPartition メソッドは、名前空間およびパーティションのプレフィックスなしでキー名のみを指定するため、より簡単に使用できます。

最初にセッションパーティションを取得し、目的のパーティションを指定します。パーティション名には、名前空間プレフィックス namespace.partition が含まれます。取得したパーティションオブジェクトのキャッシュ値を追加および取得することで、そのパーティションのキャッシュ値を管理できます。次の例は、myNs 名前空間の myPartition という名前のパーティションを取得します。次に、キャッシュにキー BookTitle という値が含まれている場合、このキャッシュ値が取得されます。新しい値がキー orderDate と今日の日付で追加されます。

1// Get partition
2Cache.SessionPartition sessionPart = Cache.Session.getPartition('myNs.myPartition');
3// Retrieve cache value from the partition
4if (sessionPart.contains('BookTitle')) {
5    String cachedTitle = (String)sessionPart.get('BookTitle');
6}
7// Add cache value to the partition
8sessionPart.put('OrderDate', Date.today());

次の例では、パーティションインスタンスを変数に割り当てることなく、1 つの式でパーティションに対する get メソッドをコールします。

1// Or use dot notation to call partition methods
2String cachedAuthor = (String)Cache.Session.getPartition('myNs.myPartition').get('BookAuthor');