Crear, recuperar, actualizar y borrar entidades

Los objetos de datos en Cloud Datastore se denominan entidades y cada una de ellas se clasifica en una categoría en particular a efectos de consulta. Por ejemplo, si estás escribiendo una aplicación de recursos humanos, puedes representar a cada empleado con una entidad de la categoría Employee. Ten en cuenta que los valores de datos de la entidad están en forma de propiedades. Para obtener más información sobre las entidades, consulta el documento conceptual Entidades, propiedades y claves.

Crear entidades y configurar propiedades

Para crear una nueva entidad en Java debes construir una instancia de clase Entity que reemplace a la categoría de la entidad como argumento para el constructor Entity(). Luego de propagar las propiedades de la entidad de ser necesario, debes pasarla como un argumento al método DatastoreService.put() para guardarla en el almacén de datos. Puedes especificar el nombre clave de la entidad pasándola como segundo argumento al constructor.

El siguiente ejemplo crea una entidad de categoría Employee, propaga sus valores de propiedad y la guarda en el almacén de datos:

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

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

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

Recuperar entidades

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

Java 8

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

Java 7

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

Actualizar entidades

Para actualizar una entidad existente, modifica los atributos del objeto Entidad y luego pásalo al método DatastoreService.put(). Los datos del objeto reemplazan a la entidad existente. El objeto completo se envía a Cloud Datastore con cada llamada a put().

Borrar entidades

Con la clave de una entidad, puedes borrar la entidad con el método DatastoreService.delete():

Java 8

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

Java 7

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

Borrar entidades de manera masiva

Si necesitas borrar un gran número de entidades, te recomendamos usar Cloud Dataflow para borrar entidades de manera masiva.

Usar operaciones por lotes

Puedes utilizar las operaciones por lotes si deseas operar en varias entidades en una sola llamada de Cloud Datastore.

Este es un ejemplo de una llamada por lotes:

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

Estas operaciones por lotes agrupan a todas las entidades o claves por grupo de entidades y luego realizan la operación solicitada en cada grupo de entidades de forma paralela, lo cual es más rápido que realizar llamadas separadas para cada entidad individual porque estas generan sobrecarga solo para una llamada de servicio. Si el lote usa varios tipos de entidades, el trabajo para todos los grupos se realiza de forma paralela del lado del servidor.

Un lote put() o una llamada delete() pueden servir para algunas entidades, pero no para otras. Si es importante que la llamada sea exitosa o falle por completo, usa una transacción con todas las entidades afectadas en el mismo grupo de entidad.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java