Crear, recuperar, actualizar y eliminar entidades

Los objetos de datos de Datastore se denominan entidades, y cada uno de ellos se clasifica en un tipo concreto para las consultas. Por ejemplo, si estás escribiendo una aplicación de recursos humanos, puedes representar a cada empleado con una entidad de tipo Employee. Ten en cuenta que los valores de los datos de la entidad tienen el formato de propiedades. Para obtener más información sobre las entidades, consulta el documento de conceptos Entidades, propiedades y claves.

Crear entidades y definir propiedades

En Java, se crea una entidad construyendo una instancia de la clase Entity y proporcionando el tipo de entidad como argumento al constructor Entity(). Después de rellenar las propiedades de la entidad, si es necesario, guárdala en el almacén de datos pasándola como argumento al método DatastoreService.put(). Puede especificar el nombre de la clave de la entidad pasándolo como segundo argumento al constructor.

En el siguiente ejemplo se crea una entidad de tipo Employee, se rellenan los valores de sus propiedades y se guarda en el almacén de datos:

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

Ten en cuenta que, si no proporcionas un nombre de clave, Datastore generará automáticamente un ID numérico para la clave de la entidad:

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

Obtener entidades

Para obtener una entidad identificada por una clave determinada, pasa el objeto Key al método DatastoreService.get():

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

Actualizar entidades

Para actualizar una entidad, modifica los atributos del objeto Entity y, a continuación, pásalo al método DatastoreService.put(). Los datos del objeto sobrescriben la entidad existente. El objeto completo se envía a Datastore con cada llamada 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);

Eliminar entidades

Si tienes la clave de una entidad, puedes eliminarla con el método DatastoreService.delete():

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

Eliminar entidades en bloque

Si necesitas eliminar un gran número de entidades, te recomendamos que utilices Dataflow para eliminar entidades en bloque.

Usar operaciones en lote

Puedes usar las operaciones por lotes si quieres operar con varias entidades en una sola llamada a Datastore.

Aquí tienes un ejemplo de una llamada por lotes:

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 operaciones por lotes agrupan todas las entidades o claves por grupo de entidades y, a continuación, realizan la operación solicitada en cada grupo de entidades en paralelo, lo que es más rápido que hacer llamadas independientes para cada entidad, ya que solo incurren en la sobrecarga de una llamada de servicio. Si el lote usa varios grupos de entidades, el trabajo de todos los grupos se realiza en paralelo en el lado del servidor.

Es posible que una llamada por lotes put() o delete() se realice correctamente para algunas entidades, pero no para otras. Si es importante que la llamada se complete o falle por completo, usa una transacción con todas las entidades afectadas en el mismo grupo de entidades.