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
AsyncCacheFilterto 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.TransactiongetCurrentTransaction()com.google.appengine.api.datastore.TransactiongetCurrentTransaction(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.PreparedQueryprepare(com.google.appengine.api.datastore.Query query)com.google.appengine.api.datastore.PreparedQueryprepare(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:
allocateIdsin 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:
allocateIdsin interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
beginTransaction
public Future<com.google.appengine.api.datastore.Transaction> beginTransaction()
- Specified by:
beginTransactionin 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:
beginTransactionin interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
delete
public Future<Void> delete(com.google.appengine.api.datastore.Key... keys)
- Specified by:
deletein interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
delete
public Future<Void> delete(Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
deletein 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:
deletein 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:
deletein 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:
getin 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:
getin 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:
getin 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:
getin interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
getActiveTransactions
public Collection<com.google.appengine.api.datastore.Transaction> getActiveTransactions()
- Specified by:
getActiveTransactionsin interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
getCurrentTransaction
public com.google.appengine.api.datastore.Transaction getCurrentTransaction()
- Specified by:
getCurrentTransactionin interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
getCurrentTransaction
public com.google.appengine.api.datastore.Transaction getCurrentTransaction(com.google.appengine.api.datastore.Transaction txn)
- Specified by:
getCurrentTransactionin interfacecom.google.appengine.api.datastore.BaseDatastoreService
-
prepare
public com.google.appengine.api.datastore.PreparedQuery prepare(com.google.appengine.api.datastore.Query query)
- Specified by:
preparein 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:
preparein 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:
putin 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:
putin 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:
putin 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:
putin interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
getDatastoreAttributes
public Future<com.google.appengine.api.datastore.DatastoreAttributes> getDatastoreAttributes()
- Specified by:
getDatastoreAttributesin interfacecom.google.appengine.api.datastore.AsyncDatastoreService
-
-