Google App Engine for Java,第 3 部分: 持久性和关系
2009-09-17 00:00:00 来源:WEB开发网注意在清单 5 中,persistenceManager
是如何被封入在 finally
块中。这确保能够把与 persistenceManager
关联的资源清除干净。
如清单 6 所示,listContact()
方法从它所查找的 persistenceManager
中创建一个查询对象。它调用了 execute()
方法,从数据存储中返回 Contact
列表。
清单 6. listContact()
@SuppressWarnings("unchecked")
public List<Contact> listContacts() {
PersistenceManager pm = getPersistenceManagerFactory()
.getPersistenceManager();
String query = "select from " + Contact.class.getName();
return (List<Contact>) pm.newQuery(query).execute();
}
在从数据存储中删除联系人之前,removeContact()
通过 ID 查找联系人,如清单 7 所示。它必须这么做,而不仅仅是把联系人直接删除,这是因为来自 GWT GUI 的 Contact
对 JDO 一无所知。在删除前,您必须获得与 PersistenceManager
缓存关联的 Contact
。
清单 7. removeContact()
public void removeContact(Contact contact) {
PersistenceManager pm = getPersistenceManagerFactory()
.getPersistenceManager();
try {
pm.currentTransaction().begin();
// We don't have a reference to the selected Product.
// So we have to look it up first,
contact = pm.getObjectById(Contact.class, contact.getId());
pm.deletePersistent(contact);
pm.currentTransaction().commit();
} catch (Exception ex) {
pm.currentTransaction().rollback();
throw new RuntimeException(ex);
} finally {
pm.close();
}
}
- ››Google搜索引擎的奥秘
- ››Google测试搜索结果页面右侧内容更丰富的信息栏
- ››Google Dart精粹:应用构建,快照和隔离体
- ››APP Loading页设计和App从当前页进入新页面交互
- ››App产品开发:App产品开发与推广的经验
- ››google的代码审查
- ››google analytics清晰追踪爬虫的爬行信息
- ››Google+中文用户在两千万Google+大军中是少数派
- ››Google AdWords最昂贵点击成本的20种关键词分类
- ››Google运作经理Bryan Power给出的GOOGLE求职意见
- ››Google用户体验的十大设计原则
- ››Applying Styles and Themes - 应用Style和Theme ...
更多精彩
赞助商链接