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

Dans 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 écrivez une application de ressources humaines, vous pouvez représenter chaque employé avec 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 crée une entité du genre Employee, renseigne ses valeurs de propriété et l'enregistre dans Datastore :

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

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

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() :

// 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é à Datastore à chaque appel de 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);

Supprimer des entités

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

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

Suppression groupée d'entités

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

Utiliser des opérations par lots

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

Voici un exemple d'appel par lot :

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 put() ou delete() par lots peut aboutir 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.