我正在尝试使用Google App Engine和持久选项JDO.我想知道是否可以将瞬态对象映射到持久对象?或者使用瞬态对象来更新持久对象?
我在编码示例中看到以下代码片段来更新对象:
public void updateEmployeeTitle(User user, String newTitle) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Employee e = pm.getObjectById(Employee.class, user.getEmail());
if (titleChangeIsAuthorized(e, newTitle) {
e.setTitle(newTitle);
} else {
throw new UnauthorizedTitleChangeException(e, newTitle);
}
} finally {
pm.close();
}
}
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的,有人知道我是否可以像JPA那样更新整个对象:object.update();
所以我想要这样的事情:
public User update(User u) {
PersistenceManager pm = PMF.get().getPersistenceManager();
User usr;
try {
usr = pm.getObjectById(User.class, u.getId());
// copy transient object u to persist object usr.
// on update of usr all changes in object u are persistent.
} finally {
pm.close();
}
return u;
}
Run Code Online (Sandbox Code Playgroud)
“瞬态”对象没有“身份”,因此无法在数据存储中找到它。仔细考虑是否要使用瞬态对象,或者是否只使用分离对象会更好。JPA 使用“分离”对象的等效项。JDO 也可以做到这一点,然后你只需调用 pm.makePersistent(detachedObj);
——安迪(DataNucleus)
归档时间: |
|
查看次数: |
3012 次 |
最近记录: |