Hi,

On Nov 2, 2005, at 7:30 AM, Michael Bouschen wrote:

Hi Jörg,

good catch! Yes, the examples are meant to use two different PersistenceManagers pm1 and pm2.

I think JDOHelper.shallowCopy would work for any instance of a persistence capable class, not only for detached instances.

The semantics of JDOHelper.shallowCopyAll would be to make an object graph suitable for attachment. So there would be a copy made of transient and detached instances but persistent instances would not be copied.

Perhaps shallowCopyAll isn't the right name since we don't shallow copy persistent instances. Maybe something like copyForAttachment or something like it.

Regards Michael

Regards,

Craig


Craig L Russell schrieb:

With this change, there is no standard way to attach the same object graph to multiple persistence managers. So a method is added to JDOHelper that copies a complete object graph so the copies can be attached to multiple persistence managers.

Instead of:
Object[ ] attached1 = pm.attachCopy(graph);
Object[ ] attached2 = pm.attachCopy(graph);

use:
Object[ ] copies = JDOHelper.shallowCopy(graph, false);
Object[ ] attached1 = pm.makePersistentAll(copies);
Object[ ] attached2 = pm.makePersistentAll(copies);

There is only one and the same persistence manager being used in these examples, shouldn't it be more like:
   Instead of:
   Object[ ] attached1 = pm1.attachCopy(graph);
   Object[ ] attached2 = pm2.attachCopy(graph);
   use:
   Object[ ] copies = JDOHelper.shallowCopy(graph, false);
   Object[ ] attached1 = pm1.makePersistentAll(copies);
   Object[ ] attached2 = pm2.makePersistentAll(copies);
BTW, is JDOHelper.shallowCopy() supposed to work only on a detached graph or on any persistence capable object?
Regards,
Jörg



--
Michael Bouschen        [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED]    http://www.tech.spree.de/
Tel.:++49/30/235 520-33        Buelowstr. 66
Fax.:++49/30/2175 2012        D-10783 Berlin


Reply via email to