我对分离副本的理解是它创建了一个对象的副本,以便您可以在没有PersistenceManager注意的情况下对其进行更改。
由于我在将模型对象传递给要使用的视图之前关闭了我的PersistenceManager,因此在传递它之前我不必调用detachCopy或makeTransient之类的东西吗?
我看过的例子确实称之为...... 这是我从http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html看到的例子:
public Employee getEmployee(User user) {
PersistenceManager pm = PMF.get().getPersistenceManager();
Employee employee, detached = null;
try {
employee = pm.getObjectById(Employee.class,
"Alfred.Smith@example.com");
// If you're using transactions, you can call
// pm.setDetachAllOnCommit(true) before committing to automatically
// detach all objects without calls to detachCopy or detachCopyAll.
detached = pm.detachCopy(employee);
} finally {
pm.close();
}
return detached;
}
答案 0 :(得分:1)
您可以使用PMF prop自动分离对象,或者手动分离它们的副本,如示例所示。现在问题是什么?
答案 1 :(得分:1)
来自http://db.apache.org/jdo/attach_detach.html
分离的对象保留其数据存储区实体的ID。超脱 应在要更新对象和附加的位置使用对象 它们稍后(更新数据存储区中的关联对象。如果你 想要用自己的数据存储区创建对象的副本 身份你应该使用makeTransient而不是detachCopy。