Entitäten erstellen, abrufen, aktualisieren und löschen

Datenobjekte in Datastore werden als Entitäten bezeichnet. Jede Entität wird für Abfragen einer bestimmten Art zugewiesen. Wenn Sie beispielsweise eine Anwendung für das Personalwesen schreiben, können Sie jeden Mitarbeiter mit einer Entität der Art Employee darstellen. Die Entitätsdatenwerte liegen dabei in Form von Attributen vor. Weitere Informationen zu Entitäten finden Sie im Konzeptdokument Entitäten, Attribute und Schlüssel.

Entitäten erstellen und Attribute festlegen

In Java erstellen Sie eine neue Entität, indem Sie eine Instanz der Klasse Entity erstellen und dabei die Art der Entität als Argument für den Konstruktor Entity() zur Verfügung stellen. Nachdem Sie gegebenenfalls Attribute für die Entität eingegeben haben, speichern Sie sie im Datenspeicher. Dazu übergeben Sie die Entität als Argument an die Methode DatastoreService.put(). Sie können den Schlüsselnamen der Entität angeben, wenn Sie ihn als zweites Argument an den Konstruktor übergeben:

Der folgende Beispielcode erstellt eine Entität der Art Employee, gibt ihre Attributwerte an und speichert die Entität im Datenspeicher:

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

Wenn Sie keinen Schlüsselnamen angeben, generiert Datastore automatisch eine numerische ID für den Schlüssel der Entität:

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

Entitäten abrufen

Um eine Entität mit einem bestimmten Schlüssel abzurufen, übergeben Sie das Objekt Key an die Methode DatastoreService.get():

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

Entitäten aktualisieren

Wenn Sie eine vorhandene Entität aktualisieren möchten, ändern Sie die Attribute des Entitätsobjekts und übergeben es dann an die Methode DatastoreService.put(). Die bestehende Entität wird mit den Objektdaten überschrieben. Bei jedem Aufruf von put() wird das ganze Objekt an Datastore gesendet.

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

Entitäten löschen

Sie können eine Entität unter Angabe ihres Schlüssels mit der Methode DatastoreService.delete() löschen:

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

Entitäten im Bulk löschen

Wenn Sie eine große Anzahl von Entitäten löschen müssen, empfehlen wir mit Dataflow Entitäten im Bulk zu löschen.

Batchvorgänge verwenden

Sie können die Batchvorgänge verwenden, wenn Sie mehrere Entitäten in einem einzigen Datastore-Aufruf bearbeiten möchten.

Es folgt ein Beispiel für einen Batchaufruf:

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

Diese Batch-Vorgänge gruppieren alle Entitäten oder Schlüssel nach Entitätengruppe und führen dann den angeforderten Vorgang für jede Entitätengruppe parallel durch. Dies ist schneller als separate Aufrufe für jede einzelne Entität, weil nur der Aufwand für einen einzigen Dienstaufruf erforderlich ist. Wenn ein Batch-Vorgang auf mehrere Entitätengruppen angewendet wird, wird die Arbeit für alle Gruppen parallel auf der Serverseite ausgeführt.

Ein Batch put() oder delete() ist möglicherweise nur für manche Entitäten erfolgreich. Wenn es wichtig ist, dass der Aufruf vollständig erfolgreich verläuft oder vollständig fehlschlägt, sollten Sie eine Transaktion verwenden, bei der sich allerdings alle betroffenen Entitäten in derselben Entitätengruppe befinden müssen.