public void makePersistent(java.lang.Object pc)
Parameters: pc - a transient instance of a Class that implements PersistenceCapable
这是JDO-javadoc里的对makePersistent的一段定义,PC,是一个瞬时化实例对象.
其实,一个Persistent new 实例也时可以makePersistent的,而一个Persistent Dirty实例则不行
测试代码:
1.持久化Persistent new 对象
PersistenceManager pm = PersistenceManagerSource.distinctPM();
Transaction t = pm.currentTransaction();
t.begin();
userDAO.setPoClass(User.class);
try {
user = (User) userDAO.getObjectById(pm, id);//从DAO里得到Persistent new User对象
pm.makePersistent(user);//持久化操作,本操作不出错
pm.makeTransient(user);
} catch (DAOException e) {
if(t.isActive())
t.rollback();
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(t.isActive())
t.commit();
if (pm != null)
pm.close();
}
return user;
2.持久化Persistent dirty对象
PersistenceManager pm = PersistenceManagerSource.distinctPM();
Transaction t = pm.currentTransaction();
t.begin();
userDAO.setPoClass(User.class);
try {
user = (User) userDAO.getObjectById(pm, id);//从DAO里得到Persistent new User对象
user.setUserName(“JJYAO“);
pm.makePersistent(user);//持久化操作,本操作出错
pm.makeTransient(user);
} catch (DAOException e) {
if(t.isActive())
t.rollback();
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(t.isActive())
t.commit();
if (pm != null)
pm.close();
}
return user;