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 java.lang.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 of CachingDatastoreService
, 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 the AsyncCacheFilter
, your cache will go out of sync.
- Author:
- Jeff Schnitzer
Method Summary |
java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> |
allocateIds(com.google.appengine.api.datastore.Key parent,
java.lang.String kind,
long num)
|
java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> |
allocateIds(java.lang.String kind,
long num)
|
java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> |
beginTransaction()
|
java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> |
beginTransaction(com.google.appengine.api.datastore.TransactionOptions options)
|
java.util.concurrent.Future<java.lang.Void> |
delete(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
|
java.util.concurrent.Future<java.lang.Void> |
delete(com.google.appengine.api.datastore.Key... keys)
|
java.util.concurrent.Future<java.lang.Void> |
delete(com.google.appengine.api.datastore.Transaction txn,
java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
|
java.util.concurrent.Future<java.lang.Void> |
delete(com.google.appengine.api.datastore.Transaction txn,
com.google.appengine.api.datastore.Key... keys)
|
java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> |
get(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
|
java.util.concurrent.Future<com.google.appengine.api.datastore.Entity> |
get(com.google.appengine.api.datastore.Key key)
|
java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> |
get(com.google.appengine.api.datastore.Transaction txn,
java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
|
java.util.concurrent.Future<com.google.appengine.api.datastore.Entity> |
get(com.google.appengine.api.datastore.Transaction txn,
com.google.appengine.api.datastore.Key key)
|
java.util.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)
|
java.util.concurrent.Future<com.google.appengine.api.datastore.DatastoreAttributes> |
getDatastoreAttributes()
|
java.util.concurrent.Future<java.util.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)
|
java.util.concurrent.Future<com.google.appengine.api.datastore.Key> |
put(com.google.appengine.api.datastore.Entity entity)
|
java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> |
put(java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
|
java.util.concurrent.Future<com.google.appengine.api.datastore.Key> |
put(com.google.appengine.api.datastore.Transaction txn,
com.google.appengine.api.datastore.Entity entity)
|
java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> |
put(com.google.appengine.api.datastore.Transaction txn,
java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CachingAsyncDatastoreService
public CachingAsyncDatastoreService(com.google.appengine.api.datastore.AsyncDatastoreService rawAsync,
EntityMemcache memcache)
allocateIds
public java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> allocateIds(java.lang.String kind,
long num)
- Specified by:
allocateIds
in interface com.google.appengine.api.datastore.AsyncDatastoreService
allocateIds
public java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> allocateIds(com.google.appengine.api.datastore.Key parent,
java.lang.String kind,
long num)
- Specified by:
allocateIds
in interface com.google.appengine.api.datastore.AsyncDatastoreService
beginTransaction
public java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> beginTransaction()
- Specified by:
beginTransaction
in interface com.google.appengine.api.datastore.AsyncDatastoreService
beginTransaction
public java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> beginTransaction(com.google.appengine.api.datastore.TransactionOptions options)
- Specified by:
beginTransaction
in interface com.google.appengine.api.datastore.AsyncDatastoreService
delete
public java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Key... keys)
- Specified by:
delete
in interface com.google.appengine.api.datastore.AsyncDatastoreService
delete
public java.util.concurrent.Future<java.lang.Void> delete(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
delete
in interface com.google.appengine.api.datastore.AsyncDatastoreService
delete
public java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Transaction txn,
com.google.appengine.api.datastore.Key... keys)
- Specified by:
delete
in interface com.google.appengine.api.datastore.AsyncDatastoreService
delete
public java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Transaction txn,
java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
delete
in interface com.google.appengine.api.datastore.AsyncDatastoreService
get
public java.util.concurrent.Future<com.google.appengine.api.datastore.Entity> get(com.google.appengine.api.datastore.Key key)
- Specified by:
get
in interface com.google.appengine.api.datastore.AsyncDatastoreService
get
public java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
get
in interface com.google.appengine.api.datastore.AsyncDatastoreService
get
public java.util.concurrent.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 interface com.google.appengine.api.datastore.AsyncDatastoreService
get
public java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(com.google.appengine.api.datastore.Transaction txn,
java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
- Specified by:
get
in interface com.google.appengine.api.datastore.AsyncDatastoreService
getActiveTransactions
public java.util.Collection<com.google.appengine.api.datastore.Transaction> getActiveTransactions()
- Specified by:
getActiveTransactions
in interface com.google.appengine.api.datastore.BaseDatastoreService
getCurrentTransaction
public com.google.appengine.api.datastore.Transaction getCurrentTransaction()
- Specified by:
getCurrentTransaction
in interface com.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 interface com.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 interface com.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 interface com.google.appengine.api.datastore.BaseDatastoreService
put
public java.util.concurrent.Future<com.google.appengine.api.datastore.Key> put(com.google.appengine.api.datastore.Entity entity)
- Specified by:
put
in interface com.google.appengine.api.datastore.AsyncDatastoreService
put
public java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> put(java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
- Specified by:
put
in interface com.google.appengine.api.datastore.AsyncDatastoreService
put
public java.util.concurrent.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 interface com.google.appengine.api.datastore.AsyncDatastoreService
put
public java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> put(com.google.appengine.api.datastore.Transaction txn,
java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
- Specified by:
put
in interface com.google.appengine.api.datastore.AsyncDatastoreService
getDatastoreAttributes
public java.util.concurrent.Future<com.google.appengine.api.datastore.DatastoreAttributes> getDatastoreAttributes()
- Specified by:
getDatastoreAttributes
in interface com.google.appengine.api.datastore.AsyncDatastoreService
getIndexes
public java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Index,com.google.appengine.api.datastore.Index.IndexState>> getIndexes()
- Specified by:
getIndexes
in interface com.google.appengine.api.datastore.AsyncDatastoreService
Copyright © 2011 Jeff Schnitzer and a gang of pirates. All Rights Reserved. Build version: 3.1