我有一些像这样的代码:
PersistenceManager pm=PMF.get().getPersistenceManager();
String query="select from "+PayPal_Message.class.getName()+" where processed == false order by time desc";
List<PayPal_Message> messages=(List<PayPal_Message>)pm.newQuery(query).execute();
if (messages.isEmpty())
{
}
else
{
for (PayPal_Message g : messages)
{
Contact_Info_Entry A_Contact_Entry=Process_PayPal_Message_To_Get_A_License(g.getContent().getValue());
pm=PMF.get().getPersistenceManager();
try
{
pm.makePersistent(A_Contact_Entry);
g.setProcessed(true);
pm.makePersistent(g);
}
catch (Exception e)
{
Send_Email(Email_From,"nm67@yahoo.com","Servlet Error Message [ "+time+" ]",new Text(e.toString()));
}
// finally { pm.close(); }
}
}
pm.close();
我想知道在关闭之前使用上面的pm来处理多个对象是否可以。或者我必须得到并关闭pm以处理每个对象?
答案 0 :(得分:0)
您应该尽可能多地使用相同的PersistenceManager。
始终获得新的可能会导致不必要的开销。如果你想使用交易,我相信你必须在那里使用同一个经理进行所有活动。
答案 1 :(得分:0)
试试这个......
PersistenceManager pm = null;
try
{
pm=PMF.get().getPersistenceManager();
String query="select from "+PayPal_Message.class.getName()+" where processed == false order by time desc";
List<PayPal_Message> messages=(List<PayPal_Message>)pm.newQuery(query).execute();
if (!messages.isEmpty())
{
for (PayPal_Message g : messages)
{
Contact_Info_Entry A_Contact_Entry=Process_PayPal_Message_To_Get_A_License(g.getContent().getValue());
try
{
pm.makePersistent(A_Contact_Entry);
g.setProcessed(true);
pm.makePersistent(g);
}
catch (Exception e)
{
Send_Email(Email_From,"nm67@yahoo.com","Servlet Error Message [ "+time+" ]",new Text(e.toString()));
}
}
}
}
finally
{
if(pm != null) pm.close();
}
答案 2 :(得分:0)
有两种方法可以使用PM对多个对象执行操作:
批处理仅限于具有相同类型的对象,而事务仅限于同一组的实体。
有人建议:
我希望这有帮助。