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.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eAsyncDatastoreService is an asynchronous version of DatastoreService, providing Futures as return values for all methods, allowing for immediate returns.\u003c/p\u003e\n"],["\u003cp\u003eUnlike DatastoreService, AsyncDatastoreService does not perform implicit transaction management because it lacks a callback mechanism to determine when transactions are ready to be committed.\u003c/p\u003e\n"],["\u003cp\u003eAll methods of AsyncDatastoreService immediately return a Future object which allows for non blocking code that can be run concurrently.\u003c/p\u003e\n"],["\u003cp\u003eAsyncDatastoreService provides various methods for data manipulation, including allocating IDs, beginning transactions, and deleting, getting, and putting entities, with some methods having transaction management versions.\u003c/p\u003e\n"],["\u003cp\u003eAsyncDatastoreService implements BaseDatastoreService.\u003c/p\u003e\n"]]],[],null,["# Interface AsyncDatastoreService (2.0.0)\n\n public interface AsyncDatastoreService extends BaseDatastoreService\n\nAn asynchronous version of [DatastoreService](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService). All methods return immediately and provide\n[Futures](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html) as their return values.\n\nThe key difference between implementations of [AsyncDatastoreService](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.AsyncDatastoreService) and\nimplementations of [DatastoreService](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService) is that async implementations do not perform implicit\ntransaction management. The reason is that implicit transaction management requires automatic\ncommits of some transactions, and without some sort of callback mechanism there is no way to\ndetermine that a put/get/delete that has been implicitly enrolled in a transaction is complete\nand therefore ready to be committed. See [ImplicitTransactionManagementPolicy](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.ImplicitTransactionManagementPolicy) for more\ninformation. \n\nImplements\n----------\n\n[BaseDatastoreService](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.BaseDatastoreService)\n\nMethods\n-------\n\n### allocateIds(@Nullable Key parent, String kind, long num)\n\n public abstract Future\u003cKeyRange\u003e allocateIds(@Nullable Key parent, String kind, long num)\n\nSee [DatastoreService#allocateIds(Key, String, long)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_allocateIds_com_google_appengine_api_datastore_Key_java_lang_String_long_).\n\n### allocateIds(String kind, long num)\n\n public abstract Future\u003cKeyRange\u003e allocateIds(String kind, long num)\n\nSee [DatastoreService#allocateIds(String, long)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_allocateIds_java_lang_String_long_).\n\n### beginTransaction()\n\n public abstract Future\u003cTransaction\u003e beginTransaction()\n\nSee [DatastoreService#beginTransaction()](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_beginTransaction__).\n\n### beginTransaction(TransactionOptions options)\n\n public abstract Future\u003cTransaction\u003e beginTransaction(TransactionOptions options)\n\nSee [DatastoreService#beginTransaction(TransactionOptions)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_beginTransaction_com_google_appengine_api_datastore_TransactionOptions_).\n\n### delete(@Nullable Transaction txn, Key\\[\\] keys)\n\n public abstract Future\u003cVoid\u003e delete(@Nullable Transaction txn, Key[] keys)\n\nSee [DatastoreService#delete(Transaction, Iterable)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_delete_com_google_appengine_api_datastore_Transaction_java_lang_Iterable_com_google_appengine_api_datastore_Key__).\n\n### delete(@Nullable Transaction txn, Iterable\\\u003cKey\\\u003e keys)\n\n public abstract Future\u003cVoid\u003e delete(@Nullable Transaction txn, Iterable\u003cKey\u003e keys)\n\nSee [DatastoreService#delete(Transaction, Iterable)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_delete_com_google_appengine_api_datastore_Transaction_java_lang_Iterable_com_google_appengine_api_datastore_Key__).\n\n### delete(Key\\[\\] keys)\n\n public abstract Future\u003cVoid\u003e delete(Key[] keys)\n\nSee [DatastoreService#delete(Key...)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_delete_).\n\n### delete(Iterable\\\u003cKey\\\u003e keys)\n\n public abstract Future\u003cVoid\u003e delete(Iterable\u003cKey\u003e keys)\n\nSee [DatastoreService#delete(Iterable)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_delete_java_lang_Iterable_com_google_appengine_api_datastore_Key__).\n\n### get(@Nullable Transaction txn, Key key)\n\n public abstract Future\u003cEntity\u003e get(@Nullable Transaction txn, Key key)\n\nSee [DatastoreService#get(Transaction, Key)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_get_com_google_appengine_api_datastore_Transaction_com_google_appengine_api_datastore_Key_).\n\n### get(@Nullable Transaction txn, Iterable\\\u003cKey\\\u003e keys)\n\n public abstract Future\u003cMap\u003cKey,Entity\u003e\u003e get(@Nullable Transaction txn, Iterable\u003cKey\u003e keys)\n\nSee [DatastoreService#get(Transaction, Iterable)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_get_com_google_appengine_api_datastore_Transaction_java_lang_Iterable_com_google_appengine_api_datastore_Key__).\n\n### get(Key key)\n\n public abstract Future\u003cEntity\u003e get(Key key)\n\nSee [DatastoreService#get(Key)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_get_com_google_appengine_api_datastore_Key_).\n\n### get(Iterable\\\u003cKey\\\u003e keys)\n\n public abstract Future\u003cMap\u003cKey,Entity\u003e\u003e get(Iterable\u003cKey\u003e keys)\n\nSee [DatastoreService#get(Iterable)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_get_java_lang_Iterable_com_google_appengine_api_datastore_Key__).\n\n### getDatastoreAttributes()\n\n public abstract Future\u003cDatastoreAttributes\u003e getDatastoreAttributes()\n\nSee [DatastoreService#getDatastoreAttributes()](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_getDatastoreAttributes__).\n\n### getIndexes()\n\n public abstract Future\u003cMap\u003cIndex,Index.IndexState\u003e\u003e getIndexes()\n\nSee [DatastoreService#getIndexes()](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_getIndexes__).\n\n### put(@Nullable Transaction txn, Entity entity)\n\n public abstract Future\u003cKey\u003e put(@Nullable Transaction txn, Entity entity)\n\nSee [DatastoreService#put(Transaction, Entity)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_put_com_google_appengine_api_datastore_Transaction_com_google_appengine_api_datastore_Entity_).\n\n### put(@Nullable Transaction txn, Iterable\\\u003cEntity\\\u003e entities)\n\n public abstract Future\u003cList\u003cKey\u003e\u003e put(@Nullable Transaction txn, Iterable\u003cEntity\u003e entities)\n\nSee [DatastoreService#put(Transaction, Iterable)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_put_com_google_appengine_api_datastore_Transaction_java_lang_Iterable_com_google_appengine_api_datastore_Entity__).\n\n### put(Entity entity)\n\n public abstract Future\u003cKey\u003e put(Entity entity)\n\nSee [DatastoreService#put(Entity)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_put_com_google_appengine_api_datastore_Entity_).\n\n### put(Iterable\\\u003cEntity\\\u003e entities)\n\n public abstract Future\u003cList\u003cKey\u003e\u003e put(Iterable\u003cEntity\u003e entities)\n\nSee [DatastoreService#put(Iterable)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.datastore.DatastoreService#com_google_appengine_api_datastore_DatastoreService_put_java_lang_Iterable_com_google_appengine_api_datastore_Entity__)."]]