セッションキャッシュの値の保存および取得
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);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');