|
|||||||||
| 上一个包 下一个包 | 有框架 无框架 | ||||||||
请参阅:
说明
| 接口概述 | |
|---|---|
| DatastoreConfig | 数据存储区的用户可配置属性。 |
| DatastoreService | DatastoreService 提供对无架构数据存储系统的访问。 |
| PreparedQuery | 包含用于从 Query 中抓取和返回实体的方法。 |
| Transaction | 介绍了要对数据存储区执行的操作的逻辑单位。 |
| 类概述 | |
|---|---|
| Blob | Blob 包含无大小限制的字节数组。 |
| DatastoreServiceFactory | 创建 DatastoreService 实现。 |
| DataTypeTranslator | DataTypeTranslator 是实用工具类,用于在数据存储区的 Property 协议缓冲区与面向用户的类(String、User 等)之间进行转换。 |
| DataTypeTranslator.ComparableByteArray | 实现 Comparable 的 byte[] 的包装。 |
| 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 | 当没有找到具有指定 Key 的 Entity 时,将引发 EntityNotFoundException。 |
| PreparedQuery.TooManyResultsException | 表明对于 PreparedQuery.asSingleEntity() 找到的结果过多。 |
数据存储区为 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);
}
}
这说明了几个基本事实:
DatastoreServiceFactory 生成的 DatastoreService 对象来访问的。
Entity 对象。
Key 值,由 KeyFactory 创建,用来检索特定的已知实体。如果键不易确定,则 Query 对象可用于检索一个实体、列表形式的多个实体(Interable 或 Iterator),或用于检索匹配实体的总数。
Query 只搜索与特定 UserInfo 实体相关联的 Task 实体,接着过滤这些 Task 实体以得到今日之前到期的 Task。
创建过程中,重要查询在构建一个或多个索引之前无法执行,这样才能确保可以有效处理每个查询。可以在 WEB-INF/datastore-indexes.xml 文件中指定应用程序所需的索引集,否则当您在开发服务器中测试应用程序时,这些索引集会自动生成。如果某个查询需要的索引无法找到,则在运行时将引发 DatastoreNeedIndexException。
虽然 Google App Engine 允许访问应用程序的多个版本,但是您的应用程序只有一个所有版本共享的数据存储区。同样,索引集由所有应用程序版本所共享。
|
|||||||||
| 上一个包 下一个包 | 有框架 无框架 | ||||||||