套件 com.google.appengine.api.datastore

資料存放區為「應用服務引擎」應用程式提供持續性的資料儲存服務,可直接或間接透過所提供的 JDO 或 JPA 介面來使用。

請參閱:
          說明

介面摘要
DatastoreConfig 可讓使用者設定的資料存放區屬性
DatastoreService DatastoreService 提供無結構描述的資料存放系統的存取方法。
PreparedQuery 包含從一個 Query 擷取或傳回實體的方法。
Transaction 說明針對資料存放區執行的一個工作邏輯單位。
 

類別摘要
Blob Blob 包含不限大小的位元組陣列。
DatastoreServiceFactory 建立 DatastoreService 實作。
DataTypeTranslator DataTypeTranslator 是多用途類別,可在資料存放區的 Property 通訊協定緩衝區與使用者面向類別 (StringUser 等) 間互相轉換。
DataTypeTranslator.ComparableByteArray 實作 Comparablebyte[] 的包裝函式。
DataTypeUtils DataTypeUtils 呈現了更簡單的介面,可讓使用者程式碼決定哪個「類別」可以安全地在資料存放區中儲存為屬性。
Entity Entity 是資料存放區的基本單位。
EntityTranslator EntityTranslator 包含將 Entity 轉譯成通訊協定緩衝區的邏輯,而通訊協定緩衝區是用來將它傳遞給 API 的實作。
FetchOptions 描述在執行 PreparedQuery 時,要套用的限制、位移與區塊大小。
FetchOptions.Builder 包含 FetchOptions 的靜態建立方法。
Key 某個資料存放區實體的主要金鑰。
KeyFactory 允許您在根實體群組 (非父系) 建立任何 Key 物件。
KeyFactory.Builder 透過上階幫助建構 Keys 的輔助類別。
Link Link 是一個有長度限制的 URL。
Query Query 會為資料存放區的零或多個 Entity 物件封裝一個要求。
Query.FilterPredicate FilterPredicate 是資料容器,包含單一篩選述詞。
Query.SortPredicate SortPredicate 是資料容器,包含單一排序述詞。
ShortBlob ShortBlob 包含一個比 DataTypeUtils.MAX_SHORT_BLOB_PROPERTY_LENGTH 短的位元組陣列。
Text Text 環繞一個沒有長度限制的字串。
 

列舉摘要
ImplicitTransactionManagementPolicy 說明資料存放區對於隱含交易管理的各種原則。
Query.FilterOperator FilterOperator 指定您想要套用到篩選器的運算子類型。
Query.SortDirection SortDirection 控制排序的順序。
 

例外狀況摘要
DatastoreFailureException 與資料存放區溝通時,如有不明錯誤發生即擲回 DatastoreFailureException
DatastoreNeedIndexException 當查詢要求索引,但卻沒有符合的索引時,即擲回 DatastoreNeedIndexException
DatastoreTimeoutException 當資料存放區操作逾時之時,即擲回 DatastoreTimeoutException
EntityNotFoundException 找不到有指定 KeyEntity 時,即擲回 EntityNotFoundException
PreparedQuery.TooManyResultsException 指出 PreparedQuery.asSingleEntity() 有太多結果。
 

套件 com.google.appengine.api.datastore 說明

資料存放區為「應用服務引擎」應用程式提供持續性的資料儲存服務,可直接或間接透過所提供的 JDO 或 JPA 介面來使用。它為容錯提供獨立放區。如需詳細資訊,請參閱線上文件

此套件包含一個資料存放區的低階 API,主要目的是為了架構編寫者。應用程式編寫者應該考慮使用所提供的資料存放區 JDO 或 JPA 介面。如果直接使用資料存放區 API,一般使用模式為:

 // Get a handle on the datastore itself
 DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

 // Lookup data by known key name
 Entity userEntity = datastore.get(KeyFactory.createKey("UserInfo", email));

 // Or perform a query
 Query query = new Query("Task", userEntity);
 query.addFilter("dueDate", Query.FilterOperator.LESS_THAN, today);
 for (Entity taskEntity : datastore.prepare(query).asIterable()) {
   if ("done".equals(taskEntity.getProperty("status"))) {
     datastore.delete(taskEntity);
   } else {
     taskEntity.setProperty("status", "overdue");
     datastore.put(taskEntity);
   }
 }
 
這說明了幾個基本要點:

在實際執行中,系統無法執行非一般查詢,直到建置一或多個索引,來確保個別查詢能有效地處理為止。您可以在 WEB-INF/datastore-indexes.xml 檔案指定應用程式要求的索引集,也可以在您於「開發伺服器」測試應用程式時自動產生索引集。如果查詢要求了一個找不到的索引,系統會在執行階段擲回 DatastoreNeedIndexException

雖然「Google 應用服務引擎」可讓使用者存取您不同版本的應用程式,但您的應用程式只有一個資料存放區,由所有版本的應用程式共用。同樣地,索引集也是由所有應用程式版本共用。