Créer, récupérer, mettre à jour et supprimer des entités

Dans Cloud Datastore, les objets de données sont appelés entités. Chacune de ces entités possède un genre spécifique qui la classe dans une catégorie pour les besoins des requêtes. Par exemple, si vous concevez une application de ressources humaines, vous pouvez représenter chaque employé par une entité du genre Employee. Sachez que les valeurs de données des entités apparaissent sous la forme de propriétés. Pour en savoir plus sur les entités, consultez le document conceptuel Entités, propriétés et clés.

Créer des entités et définir les propriétés

Avec Java, vous créez une entité en construisant une instance de la classe Entity, en fournissant le genre de l'entité en tant qu'argument au constructeur Entity(). Après avoir renseigné les propriétés de l'entité si nécessaire, vous l'enregistrez dans le datastore en la transmettant en tant qu'argument à la méthode DatastoreService.put(). Vous pouvez spécifier le nom de la clé de l'entité en le transmettant comme second argument au constructeur.

L'exemple suivant permet de créer une entité du genre Employee, d'insérer ses valeurs de propriété et de l'enregistrer dans le 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);

Notez que si vous n'indiquez pas de nom de clé, Cloud Datastore génère automatiquement un ID numérique pour la clé de l'entité :

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

Récupérer des entités

Pour récupérer une entité identifiée par une clé donnée, transmettez l'objet Key à la méthode DatastoreService.get() :

Java 8

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

Java 7

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

Mettre à jour des entités

Pour mettre à jour une entité existante, modifiez les attributs de l'objet "Entity", puis transmettez-le à la méthode DatastoreService.put(). Les données de l'objet écrasent l'entité existante. L'objet entier est envoyé à Cloud Datastore à chaque appel de put().

Supprimer des entités

En utilisant la clé d'une entité, vous pouvez supprimer l'entité à l'aide de la méthode DatastoreService.delete() :

Java 8

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

Java 7

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

Effectuer des opérations de suppression groupées

Si vous devez supprimer un grand nombre d'entités, nous vous recommandons d'utiliser Cloud Dataflow pour supprimer les entités de manière groupée.

Utiliser des opérations par lots

Vous pouvez utiliser les opérations par lots si vous souhaitez agir sur plusieurs entités via un seul appel Cloud Datastore :

Voici un exemple d'appel par lots :

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

Ces opérations par lots regroupent toutes les entités ou clés par groupe d’entités, puis exécutent l’opération demandée sur chaque groupe d’entités en parallèle. Ceci est plus rapide que d'effectuer des appels distincts pour chaque entité individuelle, car ces derniers entraînent une surcharge pour un seul appel de service. Si le lot utilise plusieurs groupes d'entités, les opérations pour tous les groupes sont effectuées en parallèle côté serveur.

Un appel par lots put() ou delete() peut réussir pour certaines entités, mais pas pour d'autres. S'il est important que l'appel aboutisse ou échoue complètement, utilisez une transaction avec toutes les entités concernées dans un même groupe.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Java 8