Package com.googlecode.objectify.cache
Class CachingAsyncDatastoreService
- java.lang.Object
-
- com.googlecode.objectify.cache.CachingAsyncDatastoreService
-
- All Implemented Interfaces:
com.google.appengine.api.datastore.AsyncDatastoreService
,com.google.appengine.api.datastore.BaseDatastoreService
public class CachingAsyncDatastoreService extends Object implements com.google.appengine.api.datastore.AsyncDatastoreService
A write-through memcache for Entity objects that works for both transactional and nontransactional sessions.
- Caches negative results as well as positive results.
- Queries do not affect the cache in any way.
- Transactional reads bypass the cache, but successful transaction commits will update the cache.
- This cache has near-transactional integrity. As long as DeadlineExceededException is not hit, cache should not go out of sync even under heavy contention.
Note: Until Google adds a hook that lets us wrap native Future> implementations, you muse install the
AsyncCacheFilter
to use this cache asynchronously. This is not necessary for synchronous use ofCachingDatastoreService
, but asynchronous operation requires an extra hook for the end of a request when fired-and-forgotten put()s and delete()s get processed. If you use this cache asynchronously, and you do not use theAsyncCacheFilter
, your cache will go out of sync.- Author:
- Jeff Schnitzer
-
-
Constructor Summary
Constructors Constructor Description CachingAsyncDatastoreService(com.google.appengine.api.datastore.AsyncDatastoreService rawAsync, EntityMemcache memcache)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Future<com.google.appengine.api.datastore.KeyRange>
allocateIds(com.google.appengine.api.datastore.Key parent, String kind, long num)
Future<com.google.appengine.api.datastore.KeyRange>
allocateIds(String kind, long num)
Future<com.google.appengine.api.datastore.Transaction>
beginTransaction()
Future<com.google.appengine.api.datastore.Transaction>
beginTransaction(com.google.appengine.api.datastore.TransactionOptions options)
Future<Void>
delete(com.google.appengine.api.datastore.Key... keys)
Future<Void>
delete(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Key... keys)
Future<Void>
delete(com.google.appengine.api.datastore.Transaction txn, Iterable<com.google.appengine.api.datastore.Key> keys)
Future<Void>
delete(Iterable<com.google.appengine.api.datastore.Key> keys)
Future<com.google.appengine.api.datastore.Entity>
get(com.google.appengine.api.datastore.Key key)
Future<com.google.appengine.api.datastore.Entity>
get(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Key key)
Future<Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>>
get(com.google.appengine.api.datastore.Transaction txn, Iterable<com.google.appengine.api.datastore.Key> keys)
Future<Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>>
get(Iterable<com.google.appengine.api.datastore.Key> keys)
Collection<com.google.appengine.api.datastore.Transaction>
getActiveTransactions()
com.google.appengine.api.datastore.Transaction
getCurrentTransaction()
com.google.appengine.api.datastore.Transaction
getCurrentTransaction(com.google.appengine.api.datastore.Transaction txn)
Future<com.google.appengine.api.datastore.DatastoreAttributes>
getDatastoreAttributes()
Future<Map<com.google.appengine.api.datastore.Index,com.google.appengine.api.datastore.Index.IndexState>>
getIndexes()
com.google.appengine.api.datastore.PreparedQuery
prepare(com.google.appengine.api.datastore.Query query)
com.google.appengine.api.datastore.PreparedQuery
prepare(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Query query)
Future<com.google.appengine.api.datastore.Key>
put(com.google.appengine.api.datastore.Entity entity)
Future<com.google.appengine.api.datastore.Key>
put(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Entity entity)
Future<List<com.google.appengine.api.datastore.Key>>
put(com.google.appengine.api.datastore.Transaction txn, Iterable<com.google.appengine.api.datastore.Entity> entities)
Future<List<com.google.appengine.api.datastore.Key>>
put(Iterable<com.google.appengine.api.datastore.Entity> entities)
-
-
-
Constructor Detail
-
CachingAsyncDatastoreService
public CachingAsyncDatastoreService(com.google.appengine.api.datastore.AsyncDatastoreService rawAsync, EntityMemcache memcache)
-
-
Method Detail
-
allocateIds
public Future<com.google.appengine.api.datastore.KeyRange> allocateIds(String kind, long num)
- Specified by:
allocateIds
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
allocateIds
public Future<com.google.appengine.api.datastore.KeyRange> allocateIds(com.google.appengine.api.datastore.Key parent, String kind, long num)
- Specified by:
allocateIds
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
beginTransaction
public Future<com.google.appengine.api.datastore.Transaction> beginTransaction()
- Specified by:
beginTransaction
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
beginTransaction
public Future<com.google.appengine.api.datastore.Transaction> beginTransaction(com.google.appengine.api.datastore.TransactionOptions options)
- Specified by:
beginTransaction
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
delete
public Future<Void> delete(com.google.appengine.api.datastore.Key... keys)
- Specified by:
delete
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
delete
public Future<Void> delete(Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
delete
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
delete
public Future<Void> delete(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Key... keys)
- Specified by:
delete
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
delete
public Future<Void> delete(com.google.appengine.api.datastore.Transaction txn, Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
delete
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
get
public Future<com.google.appengine.api.datastore.Entity> get(com.google.appengine.api.datastore.Key key)
- Specified by:
get
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
get
public Future<Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
get
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
get
public Future<com.google.appengine.api.datastore.Entity> get(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Key key)
- Specified by:
get
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
get
public Future<Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(com.google.appengine.api.datastore.Transaction txn, Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
get
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
getActiveTransactions
public Collection<com.google.appengine.api.datastore.Transaction> getActiveTransactions()
- Specified by:
getActiveTransactions
in interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
getCurrentTransaction
public com.google.appengine.api.datastore.Transaction getCurrentTransaction()
- Specified by:
getCurrentTransaction
in interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
getCurrentTransaction
public com.google.appengine.api.datastore.Transaction getCurrentTransaction(com.google.appengine.api.datastore.Transaction txn)
- Specified by:
getCurrentTransaction
in interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
prepare
public com.google.appengine.api.datastore.PreparedQuery prepare(com.google.appengine.api.datastore.Query query)
- Specified by:
prepare
in interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
prepare
public com.google.appengine.api.datastore.PreparedQuery prepare(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Query query)
- Specified by:
prepare
in interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
put
public Future<com.google.appengine.api.datastore.Key> put(com.google.appengine.api.datastore.Entity entity)
- Specified by:
put
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
put
public Future<List<com.google.appengine.api.datastore.Key>> put(Iterable<com.google.appengine.api.datastore.Entity> entities)
- Specified by:
put
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
put
public Future<com.google.appengine.api.datastore.Key> put(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Entity entity)
- Specified by:
put
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
put
public Future<List<com.google.appengine.api.datastore.Key>> put(com.google.appengine.api.datastore.Transaction txn, Iterable<com.google.appengine.api.datastore.Entity> entities)
- Specified by:
put
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
getDatastoreAttributes
public Future<com.google.appengine.api.datastore.DatastoreAttributes> getDatastoreAttributes()
- Specified by:
getDatastoreAttributes
in interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
-