com.google.appengine.api.datastore 包

数据存储区为 App Engine 应用程序提供持久存储,可直接使用,也可通过提供的 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 转换到协议缓冲区的逻辑,协议缓冲区用于将 Entity 传递给 API 实现。
FetchOptions 描述执行 PreparedQuery 时要应用的限制、偏移和块大小。
FetchOptions.Builder 包含 FetchOptions 的静态创建方法。
Key 数据存储区实体的主键
KeyFactory 允许您在根实体组(无父实体)中创建任意的 Key 对象。
KeyFactory.Builder 辅助具有祖先的 Keys 的构造的帮助程序类。
Link Link 是长度有限的网址。
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 包的说明

数据存储区为 App Engine 应用程序提供持久存储,可直接使用,也可通过提供的 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 App Engine 允许访问应用程序的多个版本,但是您的应用程序只有一个所有版本共享的数据存储区。同样,索引集由所有应用程序版本所共享。