建立、擷取、更新以及刪除實體

Cloud Datastore 中的資料物件又稱為「實體」。為方便查詢,每個實體會分門別類到特定的「種類」中。舉例來說,人力資源應用程式可以用 Employee 種類的實體來代表每位員工。請注意,實體資料值採屬性形式。 如要進一步瞭解實體,請參閱實體、屬性和金鑰概念文件。

建立實體及設定屬性

在 Java 中建立新實體的方法如下:建構 Entity 類別的執行個體,然後將實體的種類當做引數提供給 Entity() 建構函式。視需求填入實體的屬性後,將實體以引數的形式傳送給 DatastoreService.put() 方法,即可在資料儲存庫中儲存實體。您可以將實體的金鑰名稱當做第二個引數傳送給建構函式,藉此為實體指定金鑰名稱。

以下範例示範了如何建立 Employee 種類的實體、填入其屬性值,然後儲存至資料儲存庫:

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

請注意,如果您沒有提供金鑰名稱,Cloud Datastore 會自動產生用於實體金鑰的數字 ID:

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

擷取實體

如要擷取特定金鑰所指定的實體,請將 Key 物件傳送至 DatastoreService.get() 方法:

Java 8

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

Java 7

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

更新實體

如要更新現有實體,請修改實體物件的屬性,然後將物件傳送至 DatastoreService.put() 方法。物件資料會覆寫現有實體,每次呼叫 put() 時,系統會將整個物件傳送至 Cloud Datastore。

刪除實體

如果有實體的金鑰,您就可以透過 DatastoreService.delete() 方法刪除實體:

刪除大量實體

如果需要刪除大量的實體,建議使用 Cloud Dataflow 來刪除大量實體

使用批次作業

如果您想在單一 Cloud Datastore 呼叫中針對大量實體進行操作,可以使用批次作業。

以下是批次呼叫的範例:

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

這些批次作業會將所有實體或金鑰分為實體群組,然後在每個實體群組上同時執行要求的作業。比起針對個別實體分別進行呼叫,這種方法的效率更高,因為只會對一個服務呼叫造成負擔。如果批次作業使用到多個實體群組,則系統會在伺服器端針對所有群組同時執行作業。

put()delete() 批次呼叫可能對某些實體奏效,對其他實體卻無效。如果呼叫必須完全成功或完全失敗,請使用交易,且所有受影響的實體都須位在相同的實體群組。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 適用的 App Engine 標準環境