WEB开发网
开发学院软件开发Java Google App Engine for Java,第 3 部分: 持久性和... 阅读

Google App Engine for Java,第 3 部分: 持久性和关系

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 注意在清单 5 中,persistenceManager是如何被封入在 finally块中,Google App Engine for Java,第 3 部分: 持久性和关系(7),这确保能够把与 persistenceManager关联的资源清除干净,如清单 6 所示,这是因为来自 GWT G

注意在清单 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(); 
 } 
} 

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Google App Engine

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接