Creazione, recupero, aggiornamento ed eliminazione delle entità

Gli oggetti dati in Datastore sono noti come entità, ognuna delle quali è classificata come un determinato tipo ai fini delle query. Ad esempio, se stai scrivendo un'applicazione per le risorse umane, potresti rappresentare ogni dipendente con un'entità di tipo Employee. Tieni presente che i valori dei dati delle entità sono sotto forma di proprietà. Per saperne di più sulle entità, consulta il documento sui concetti Entità, proprietà e chiavi.

Creazione di entità e impostazione di proprietà

In Java, crei una nuova entità costruendo un'istanza della classe Entity, fornendo il tipo dell'entità come argomento al costruttore Entity(). Dopo aver compilato le proprietà dell'entità, se necessario, salvala 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 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 della 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 delle 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);

Aggiornamento delle entità

Per aggiornare un'entità esistente, modifica gli attributi dell'oggetto Entity e poi passalo al metodo DatastoreService.put(). I dati dell'oggetto sovrascrivono l'entità esistente. L'intero oggetto viene inviato a Datastore a 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.

Utilizzare le operazioni batch

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

Ecco 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, il che è più veloce rispetto a effettuare chiamate separate per ogni singola entità perché comporta il sovraccarico di una sola chiamata di servizio. Se il batch utilizza più gruppi di entità, il lavoro per tutti i gruppi viene eseguito in parallelo lato server.

Una chiamata batch put() o delete() potrebbe riuscire per alcune entità, ma non per altre. Se è importante che la chiamata vada a buon fine o non vada a buon fine, utilizza una transazione con tutte le entità interessate nello stesso gruppo di entità.