Creazione, recupero, aggiornamento ed eliminazione delle entità

Gli oggetti di dati in Datastore sono noti come entità, ognuno dei quali è classificato in un determinato tipo ai fini delle query. Ad esempio, se stai scrivendo un'applicazione per le risorse umane, puoi rappresentare ogni dipendente con un'entità di tipo Employee. Tieni presente che i valori dei dati entità sono sotto forma di proprietà. Per ulteriori informazioni sulle entità, consulta il documento concettuale Entità, proprietà e chiavi.

Creare entità e impostare le proprietà

In Java, puoi creare una nuova entità costruendo un'istanza di classe Entity, fornendo il tipo di entità come argomento al costruttore di Entity(). Dopo aver compilato le proprietà dell'entità, se necessario, la salvi nel datastore passandola come argomento al metodo DatastoreService.put(). Puoi specificare il nome della chiave dell'entità passandolo come secondo argomento al costruttore.

L'esempio seguente crea un'entità di tipo Employee, compila i valori delle relative proprietà e la salva nel datastore:

Entity employee = new Entity("Employee", "asalieri");
employee.setProperty("firstName", "Antonio");
employee.setProperty("lastName", "Salieri");
employee.setProperty("hireDate", new Date());
employee.setProperty("attendedHrTraining", true);

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(employee);

Tieni presente che se non fornisci un nome chiave, Datastore genera automaticamente un ID numerico per la chiave dell'entità:

Entity employee = new Entity("Employee");
// Set the entity properties.
// ...
datastore.put(employee);

Recupero entità

Per recuperare un'entità identificata da una determinata chiave, passa l'oggetto Key al metodo DatastoreService.get():

// Key employeeKey = ...;
Entity employee = datastore.get(employeeKey);

Aggiornare le entità

Per aggiornare un'entità esistente, modifica gli attributi dell'oggetto Entità, quindi passalo al metodo DatastoreService.put(). I dati dell'oggetto sovrascrivono l'entità esistente. L'intero oggetto viene inviato a Datastore con ogni chiamata a put().

Entity employee = new Entity("Employee", "asalieri");
employee.setProperty("firstName", "Antonio");
employee.setProperty("lastName", "Salieri");
employee.setProperty("hireDate", new Date());
employee.setProperty("attendedHrTraining", true);

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(employee);

Eliminazione di entità

Data la chiave di un'entità, puoi eliminarla con il metodo DatastoreService.delete():

// Key employeeKey = ...;
datastore.delete(employeeKey);

Eliminazione di entità in blocco

Se devi eliminare un numero elevato di entità, ti consigliamo di utilizzare Dataflow per eliminare le entità in blocco.

Utilizzo delle operazioni batch

Puoi utilizzare le operazioni batch se vuoi operare su più entità in una singola chiamata Datastore.

Di seguito è riportato un esempio di chiamata batch:

Entity employee1 = new Entity("Employee");
Entity employee2 = new Entity("Employee");
Entity employee3 = new Entity("Employee");
// ...

List<Entity> employees = Arrays.asList(employee1, employee2, employee3);
datastore.put(employees);

Queste operazioni batch raggruppano tutte le entità o le chiavi per gruppo di entità e poi eseguono l'operazione richiesta su ogni gruppo di entità in parallelo, una procedura più rapida rispetto a fare chiamate separate per ogni singola entità, poiché comportano l'overhead per una sola chiamata di servizio. Se il batch utilizza più gruppi di entità, il lavoro per tutti i gruppi viene eseguito in parallelo sul lato server.

Una chiamata batch put() o delete() potrebbe avere esito positivo per alcune entità, ma non per altre. Se è importante che la chiamata abbia esito positivo o negativo, utilizza una transazione con tutte le entità interessate nello stesso gruppo di entità.