JDO makePersistent 的一些补充

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航