An interface to represent a batch of write operations. All write operation for a batch writer
will be applied to the Datastore in one RPC call.
WARNING: This class maintains an internal state in terms of java.util.LinkedHashMap and java.util.LinkedHashSet which gets updated on every method
call performing CRUD operations to record the mutations. Since java.util.LinkedHashMap is
not thread safe as per its documentation,
This class too should not be treated as a thread safe class.
Datastore add operation: inserts the provided entity. This method will automatically allocate
an id if necessary. If entity has a complete key and was already marked for deletion in this
writer, the operation will be changed to #put.
Datastore add operation: inserts the provided entities. This method will automatically allocate
id for any entity with an incomplete key. For entities with complete keys that were marked for deletion in this writer the
operation will be changed to #put.
Datastore add operation. This method will also allocate id for any entity with an incomplete
key. As opposed to #add(FullEntity) and #add(FullEntity...), this method will
defer any necessary id allocation to submit time.
A datastore delete operation. It is OK to request the deletion of a non-existing key. This operation will also remove from this batch any prior writes for entities
with the same keys.
A Datastore put (a.k.a upsert) operation: inserts an entity if it does not exist, updates it
otherwise. This method will automatically allocate an id if necessary. This operation will also remove from this writer any prior writes for the same
entity.
A Datastore put (a.k.a upsert) operation: creates an entity if it does not exist, updates it
otherwise. This method will automatically allocate id for any entity with an incomplete key. This operation will also remove from this writer any prior writes for the same
entities.
Datastore put operation. This method will also allocate id for any entity with an incomplete
key. As opposed to #put(FullEntity) and #put(FullEntity...), this method will
defer any necessary id allocation to submit time.
A Datastore update operation. The operation will fail if an entity with the same key does not
already exist. This operation will be converted to #put operation for entities that were
already added or put in this writer.
[[["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."],[],[],null,["# Interface DatastoreBatchWriter (2.31.2)\n\nVersion latestkeyboard_arrow_down\n\n- [2.31.2 (latest)](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.31.1](/java/docs/reference/google-cloud-datastore/2.31.1/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.30.0](/java/docs/reference/google-cloud-datastore/2.30.0/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.29.1](/java/docs/reference/google-cloud-datastore/2.29.1/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.28.2](/java/docs/reference/google-cloud-datastore/2.28.2/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.27.1](/java/docs/reference/google-cloud-datastore/2.27.1/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.26.4](/java/docs/reference/google-cloud-datastore/2.26.4/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.25.2](/java/docs/reference/google-cloud-datastore/2.25.2/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.24.3](/java/docs/reference/google-cloud-datastore/2.24.3/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.23.0](/java/docs/reference/google-cloud-datastore/2.23.0/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.22.0](/java/docs/reference/google-cloud-datastore/2.22.0/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.21.3](/java/docs/reference/google-cloud-datastore/2.21.3/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.20.2](/java/docs/reference/google-cloud-datastore/2.20.2/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.19.2](/java/docs/reference/google-cloud-datastore/2.19.2/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.18.5](/java/docs/reference/google-cloud-datastore/2.18.5/com.google.cloud.datastore.DatastoreBatchWriter)\n- [2.17.6](/java/docs/reference/google-cloud-datastore/2.17.6/com.google.cloud.datastore.DatastoreBatchWriter) \n\n public interface DatastoreBatchWriter extends DatastoreWriter\n\nAn interface to represent a batch of write operations. All write operation for a batch writer\nwill be applied to the Datastore in one RPC call.\n\n**WARNING: This class maintains an internal state in terms of java.util.LinkedHashMap and java.util.LinkedHashSet which gets updated on every method\ncall performing CRUD operations to record the mutations. Since java.util.LinkedHashMap is\nnot thread safe as per its [documentation](https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html),\nThis class too should not be treated as a thread safe class.** \n\nImplements\n----------\n\n[DatastoreWriter](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreWriter)\n\nMethods\n-------\n\n### add(FullEntity\\\u003c?\\\u003e entity)\n\n public abstract Entity add(FullEntity\u003c?\u003e entity)\n\nDatastore add operation: inserts the provided entity. This method will automatically allocate\nan id if necessary. If `entity` has a complete key and was already marked for deletion in this\nwriter, the operation will be changed to [#put](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter#com_google_cloud_datastore_DatastoreBatchWriter_put_).\n\n### add(FullEntity\\\u003c?\\\u003e\\[\\] entities)\n\n public abstract List\u003cEntity\u003e add(FullEntity\u003c?\u003e[] entities)\n\nDatastore add operation: inserts the provided entities. This method will automatically allocate\nid for any entity with an incomplete key. For entities with complete keys that were marked for deletion in this writer the\noperation will be changed to [#put](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter#com_google_cloud_datastore_DatastoreBatchWriter_put_).\n\n### addWithDeferredIdAllocation(FullEntity\\\u003c?\\\u003e\\[\\] entities)\n\n public abstract void addWithDeferredIdAllocation(FullEntity\u003c?\u003e[] entities)\n\nDatastore add operation. This method will also allocate id for any entity with an incomplete\nkey. As opposed to [#add(FullEntity)](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter#com_google_cloud_datastore_DatastoreBatchWriter_add_com_google_cloud_datastore_FullEntity____) and [#add(FullEntity...)](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter#com_google_cloud_datastore_DatastoreBatchWriter_add_), this method will\ndefer any necessary id allocation to submit time.\n\n### delete(Key\\[\\] keys)\n\n public abstract void delete(Key[] keys)\n\nA datastore delete operation. It is OK to request the deletion of a non-existing key. This operation will also remove from this batch any prior writes for entities\nwith the same keys.\n\n### isActive()\n\n public abstract boolean isActive()\n\nReturns `true` if still active (write operations were not sent to the Datastore).\n\n### put(FullEntity\\\u003c?\\\u003e entity)\n\n public abstract Entity put(FullEntity\u003c?\u003e entity)\n\nA Datastore put (a.k.a upsert) operation: inserts an entity if it does not exist, updates it\notherwise. This method will automatically allocate an id if necessary. This operation will also remove from this writer any prior writes for the same\nentity.\n\n### put(FullEntity\\\u003c?\\\u003e\\[\\] entities)\n\n public abstract List\u003cEntity\u003e put(FullEntity\u003c?\u003e[] entities)\n\nA Datastore put (a.k.a upsert) operation: creates an entity if it does not exist, updates it\notherwise. This method will automatically allocate id for any entity with an incomplete key. This operation will also remove from this writer any prior writes for the same\nentities.\n\n### putWithDeferredIdAllocation(FullEntity\\\u003c?\\\u003e\\[\\] entities)\n\n public abstract void putWithDeferredIdAllocation(FullEntity\u003c?\u003e[] entities)\n\nDatastore put operation. This method will also allocate id for any entity with an incomplete\nkey. As opposed to [#put(FullEntity)](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter#com_google_cloud_datastore_DatastoreBatchWriter_put_com_google_cloud_datastore_FullEntity____) and [#put(FullEntity...)](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter#com_google_cloud_datastore_DatastoreBatchWriter_put_), this method will\ndefer any necessary id allocation to submit time.\n\n### update(Entity\\[\\] entities)\n\n public abstract void update(Entity[] entities)\n\nA Datastore update operation. The operation will fail if an entity with the same key does not\nalready exist. This operation will be converted to [#put](/java/docs/reference/google-cloud-datastore/latest/com.google.cloud.datastore.DatastoreBatchWriter#com_google_cloud_datastore_DatastoreBatchWriter_put_) operation for entities that were\nalready added or put in this writer."]]