Interface Batch (2.24.3)

public interface Batch extends DatastoreBatchWriter

An interface to represent a batch of write operations. Any write operation that is applied on a batch will only be sent to the Datastore upon #submit. A usage example:


 Entity entity1 = datastore.get(key1);
 Batch batch = datastore.newBatch();
 Entity entity2 = Entity.newBuilder(key2).set("name", "John").build();
 entity1 = Entity.newBuilder(entity1).clear().setNull("bla").build();
 Entity entity3 = Entity.newBuilder(key3).set("title", "title").build();
 batch.update(entity1);
 batch.add(entity2, entity3);
 batch.submit();
 

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.

Methods

add(FullEntity<?> entity)

public abstract Entity add(FullEntity<?> entity)

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.

If an entity for entity.getKey() does not exist, entity is inserted. Otherwise, #submit() will throw a DatastoreException with DatastoreException#getReason() equal to "ALREADY_EXISTS".

Parameter
Name Description
entity FullEntity<?>

the entity to be added to the datastore

Returns
Type Description
Entity

The entity that was added

add(FullEntity<?>[] entities)

public abstract List<Entity> add(FullEntity<?>[] entities)

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.

If none of entities' keys exist, all entities are inserted. If any of entities' keys already exists, #submit() will throw a DatastoreException with DatastoreException#getReason() equal to "ALREADY_EXISTS". All entities in entities whose key did not exist are inserted.

Parameter
Name Description
entities FullEntity<?>[]

entities to be added to the datastore

Returns
Type Description
List<Entity>

A list of entities that have been added

getDatastore()

public abstract Datastore getDatastore()

Returns the batch associated Datastore.

Returns
Type Description
Datastore

The batch associated datastore

submit()

public abstract Batch.Response submit()

Submit the batch to the Datastore.

Returns
Type Description
Batch.Response

Response of the batch submit operation.