# AsyncDatastoreService
Date: 2012-02-24

## com.google.appengine.api.datastore
Interface AsyncDatastoreService

All Superinterfaces:
  BaseDatastoreService

    public interface AsyncDatastoreService

extends BaseDatastoreService

An asynchronous version of `DatastoreService`. All methods return immediately and provide `Futures` as their return values.

The key difference between implementations of `AsyncDatastoreService` and implementations of `DatastoreService` is that async implementations do not perform implicit transaction management. The reason is that implicit transaction management requires automatic commits of some transactions, and without some sort of callback mechanism there is no way to determine that a put/get/delete that has been implicitly enrolled in a transaction is complete and therefore ready to be committed. See `ImplicitTransactionManagementPolicy` for more information.

Method Summary
`java.util.concurrent.Future<KeyRange>` `allocateIds(Key parent, java.lang.String kind, long num)`
`java.util.concurrent.Future<KeyRange>` `allocateIds(java.lang.String kind, long num)`
`java.util.concurrent.Future<Transaction>` `beginTransaction()`
`java.util.concurrent.Future<Transaction>` `beginTransaction(TransactionOptions options)`
`java.util.concurrent.Future<java.lang.Void>` `delete(java.lang.Iterable<Key> keys)`
`java.util.concurrent.Future<java.lang.Void>` `delete(Key... keys)`
`java.util.concurrent.Future<java.lang.Void>` `delete(Transaction txn, java.lang.Iterable<Key> keys)`
`java.util.concurrent.Future<java.lang.Void>` `delete(Transaction txn, Key... keys)`
`java.util.concurrent.Future<java.util.Map<Key,Entity>>` `get(java.lang.Iterable<Key> keys)`
`java.util.concurrent.Future<Entity>` `get(Key key)`
`java.util.concurrent.Future<java.util.Map<Key,Entity>>` `get(Transaction txn, java.lang.Iterable<Key> keys)`
`java.util.concurrent.Future<Entity>` `get(Transaction txn, Key key)`
`java.util.concurrent.Future<DatastoreAttributes>` `getDatastoreAttributes()`
`java.util.concurrent.Future<java.util.Map<Index,Index.IndexState>>` `getIndexes()`
`java.util.concurrent.Future<Key>` `put(Entity entity)`
`java.util.concurrent.Future<java.util.List<Key>>` `put(java.lang.Iterable<Entity> entities)`
`java.util.concurrent.Future<Key>` `put(Transaction txn, Entity entity)`
`java.util.concurrent.Future<java.util.List<Key>>` `put(Transaction txn, java.lang.Iterable<Entity> entities)`

Methods inherited from interface com.google.appengine.api.datastore.BaseDatastoreService
`getActiveTransactions, getCurrentTransaction, getCurrentTransaction, prepare, prepare`

Method Detail

### beginTransaction

    java.util.concurrent.Future<Transaction> beginTransaction()

  See Also:
    `DatastoreService.beginTransaction()`

### beginTransaction

    java.util.concurrent.Future<Transaction> beginTransaction(TransactionOptions options)

  See Also:
    `DatastoreService.beginTransaction(TransactionOptions)`

### get

    java.util.concurrent.Future<Entity> get(Key key)

  See Also:
    `DatastoreService.get(Key)`

### get

    java.util.concurrent.Future<Entity> get(Transaction txn,
                                            Key key)

  See Also:
    `DatastoreService.get(Transaction, Key)`

### get

    java.util.concurrent.Future<java.util.Map<Key,Entity>> get(java.lang.Iterable<Key> keys)

  See Also:
    `DatastoreService.get(Iterable)`

### get

    java.util.concurrent.Future<java.util.Map<Key,Entity>> get(Transaction txn,
                                                               java.lang.Iterable<Key> keys)

  See Also:
    `DatastoreService.get(Transaction, Iterable)`

### put

    java.util.concurrent.Future<Key> put(Entity entity)

  See Also:
    `DatastoreService.put(Entity)`

### put

    java.util.concurrent.Future<Key> put(Transaction txn,
                                         Entity entity)

  See Also:
    `DatastoreService.put(Transaction, Entity)`

### put

    java.util.concurrent.Future<java.util.List<Key>> put(java.lang.Iterable<Entity> entities)

  See Also:
    `DatastoreService.put(Iterable)`

### put

    java.util.concurrent.Future<java.util.List<Key>> put(Transaction txn,
                                                         java.lang.Iterable<Entity> entities)

  See Also:
    `DatastoreService.put(Transaction, Iterable)`

### delete

    java.util.concurrent.Future<java.lang.Void> delete(Key... keys)

  See Also:
    `DatastoreService.delete(Key...)`

### delete

    java.util.concurrent.Future<java.lang.Void> delete(Transaction txn,
                                                       Key... keys)

  See Also:
    `DatastoreService.delete(Transaction, Iterable)`

### delete

    java.util.concurrent.Future<java.lang.Void> delete(java.lang.Iterable<Key> keys)

  See Also:
    `DatastoreService.delete(Iterable)`

### delete

    java.util.concurrent.Future<java.lang.Void> delete(Transaction txn,
                                                       java.lang.Iterable<Key> keys)

  See Also:
    `DatastoreService.delete(Transaction, Iterable)`

### allocateIds

    java.util.concurrent.Future<KeyRange> allocateIds(java.lang.String kind,
                                                      long num)

  See Also:
    `DatastoreService.allocateIds(String, long)`

### allocateIds

    java.util.concurrent.Future<KeyRange> allocateIds(Key parent,
                                                      java.lang.String kind,
                                                      long num)

  See Also:
    `DatastoreService.allocateIds(Key, String, long)`

### getDatastoreAttributes

    java.util.concurrent.Future<DatastoreAttributes> getDatastoreAttributes()

  See Also:
    `DatastoreService.getDatastoreAttributes()`

### getIndexes

    java.util.concurrent.Future<java.util.Map<Index,Index.IndexState>> getIndexes()

  See Also:
    `DatastoreService.getIndexes()`