Como criar, recuperar, atualizar e excluir entidades

Os objetos de dados no Cloud Datastore são conhecidos como entidades. Cada um deles é categorizado sob um tipo específico para fins de consultas. Por exemplo, ao programar um aplicativo de recursos humanos, você pode representar cada funcionário com uma entidade do tipo Employee. Observe que os valores de dados de entidade estão na forma de propriedades. Para mais informações sobre entidades, consulte o documento conceitual Entidades, propriedades e chaves.

Como criar entidades e definir propriedades

Em Java, você constrói uma instância da classe Entity para criar uma nova entidade, fornecendo o tipo de entidade como um argumento para o construtor Entity() (conteúdo dos links em inglês). Depois de preencher as propriedades da entidade, se necessário, salve-a no armazenamento de dados transferindo-a como um argumento para o método DatastoreService.put(). Você pode especificar o nome da chave da entidade passando-o como o segundo argumento para o construtor.

O exemplo a seguir cria uma entidade do tipo Employee, preenche os respectivos valores de propriedade e a salva no datastore:

Java 8

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

Java 7

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

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

datastore.put(employee);

Observe que, se você não fornecer um nome de chave, o Cloud Datastore gerará automaticamente um código numérico para ser a chave da entidade:

Java 8

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

Java 7

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

Como recuperar entidades

Para recuperar uma entidade identificada por uma determinada chave, transmita o objeto Key para o método DatastoreService.get() (conteúdo dos links em inglês):

Java 8

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

Java 7

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

Como atualizar entidades

Para atualizar uma entidade atual, modifique os atributos do objeto Entity e, em seguida, transmita-o para o método DatastoreService.put() (em inglês). Os dados do objeto sobrescrevem a entidade atual. O objeto inteiro é enviado ao Cloud Datastore a cada chamada do método put().

Como excluir entidades

A partir de uma chave de entidade, é possível excluir a entidade com o método DatastoreService.delete() (em inglês):

Java 8

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

Java 7

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

Como excluir entidades em massa

Se você precisar excluir um grande número de entidades, recomendamos usar o Cloud Dataflow para excluir entidades em massa.

Como usar operações em lote

Você poderá usar as operações em lote se quiser operar em várias entidades em uma única chamada do Cloud Datastore.

Veja um exemplo de chamada em lote:

Java 8

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

Java 7

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

Essas operações em lote agrupam todas as entidades ou chaves por grupo de entidades e, em seguida, executam a operação solicitada em cada grupo de entidades em paralelo, o que é mais rápido do que fazer chamadas separadas para cada entidade, porque elas geram sobrecarga para apenas uma chamada de serviço. Se o lote usa múltiplos grupos de entidades, o trabalho referente a todos os grupos é feito em paralelo no lado do servidor.

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

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Java 8