Criar, obter, atualizar e eliminar entidades

Os objetos de dados no Datastore são conhecidos como entidades, cada uma das quais é categorizada num tipo específico para fins de consultas. Por exemplo, se estiver a escrever uma aplicação de recursos humanos, pode representar cada funcionário com uma entidade do tipo Employee. Tenha em atenção que os valores dos dados das entidades estão sob a forma de propriedades. Para mais informações sobre entidades, consulte o documento conceptual Entidades, propriedades e chaves.

Criar entidades e definir propriedades

Em Java, cria uma nova entidade construindo uma instância da classe Entity, fornecendo o tipo da entidade como um argumento ao construtor Entity(). Depois de preencher as propriedades da entidade, se necessário, guarde-a no arquivo de dados transmitindo-a como um argumento ao método DatastoreService.put(). Pode especificar o nome da chave da entidade transmitindo-o como o segundo argumento ao construtor.

O exemplo seguinte cria uma entidade do tipo Employee, preenche os respetivos valores de propriedades e guarda-a na loja de dados:

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);

Tenha em atenção que, se não fornecer um nome de chave, o Datastore gera automaticamente um ID numérico para a chave da entidade:

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

A obter entidades

Para obter uma entidade identificada por uma determinada chave, transmita o objeto Key ao método DatastoreService.get():

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

A atualizar entidades

Para atualizar uma entidade existente, modifique os atributos do objeto Entity e, em seguida, transmita-o para o método DatastoreService.put(). Os dados do objeto substituem a entidade existente. O objeto completo é enviado para o Datastore com cada chamada para 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);

Eliminar entidades

Dada a chave de uma entidade, pode eliminar a entidade com o método DatastoreService.delete():

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

Eliminar entidades em massa

Se precisar de eliminar um grande número de entidades, recomendamos que use o Dataflow para eliminar entidades em massa.

Usar operações em lote

Pode usar as operações em lote se quiser operar em várias entidades numa única chamada do Datastore.

Segue-se um exemplo de uma chamada em lote:

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);

Estas operações em lote agrupam todas as entidades ou chaves por grupo de entidades e, em seguida, executam a operação pedida em cada grupo de entidades em paralelo, o que é mais rápido do que fazer chamadas separadas para cada entidade individual porque incorrem na sobrecarga de apenas uma chamada de serviço. Se o lote usar vários grupos de entidades, o trabalho para todos os grupos é feito em paralelo no lado do servidor.

Uma chamada em lote put() ou delete() pode ter êxito para algumas entidades, mas não para outras. Se for importante que a chamada seja totalmente bem-sucedida ou totalmente falhada, use uma transação com todas as entidades afetadas no mesmo grupo de entidades.