Hallo,

thank you again: now I got it!
I needed examples :-)

> Well, if you can mark each entity with whether it's persistent or not,

Yes.

> you could do this:
> 
> public void addToManyTarget(Object obj, ...)
> {
>    if obj.isNonpersistent()
>    {
>        nonpersistentSet.add(obj);
>    }
>    else
>    {
>         super.addToManyTarget(obj, ....);
>    }
> }
> 
> public List getList()
> {
>     List list = new ArrayList(super.getList())
>     list.addObjects(nonPersistentSet);
> }

This defines me "persistent -> (non)persistent".

> Things get more complicated if you want to have reverse relationships
> set for your non-persistent objects.    I have implemented a
> non-persistent object DAO using the Cayenne api for testing and
> development.  It's not pretty, but it can be done.
Do you mean that "nonpersistent -> (non)persistent" will be complicated?
Why? I can do the following:

 public void addToManyTarget(Object obj, ...)
 {  if(this.isNonpersistent()) {
       allObjects.add(obj);
        
    } else {
       if obj.isNonpersistent() {
          nonpersistentSet.add(obj);

       } else {
          super.addToManyTarget(obj, ....);
       }
    }
}

Would this work?

> And that's not going to handle what happens if you try to do a query
> on object sets that are both persistent and non-persistent.

I will not get the references in the nonpersistent-object-list, right?

Another question: How does cayenne hold objects in memory?
As a normal reference, as WeakReference or even as PhantomReference?

Peter.

Reply via email to