Problem/misunderstanding with ObjectCache, multiple databases and ObjectModification, 1.0.4

Längerich, Bernd <[email protected]>
Newsgroups gmane.comp.jakarta.ojb.user
Message-ID <[email protected]>
Hi,

I have some problems understanding (and using) the concept of the cache when using multiple databases and determining the object modification level at the store method.

Assume we have two databases A and B with one being the default and one being the backup database. Both connections are configured using the cache:
       <object-cache class="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl">
         <attribute attribute-name="timeout" attribute-value="-1"/>
       </object-cache>

Given the following code sequence with empty databases, I have some problems:

AnObject someObject = new AnObject();
[...]
PersistenceBroker defaultBroker = PersistenceBrokerFactory.defaultPersistenceBroker();
defaultbroker.store(someObject); // resulting in an INSERT to the default DB
[...]
defaultBroker.store(someObject); // resulting in an UPDATE to the default DB

PersistenceBroker backupBroker = PersistenceBrokerFactory.createPersistenceBroker(new PBKey("backup"));
backupBroker.store(someObject); // resulting in an UPDATE to the backup DB, which fails as there is no such row in the DB


As far as I understand the code from PersistanceBrokerImpl, it should query the cache and/or the DB:
        /*
        if PK values are set, lookup cache or db to see whether object
        needs insert or update
        */
        if (!insert)
        {
            insert = objectCache.lookup(oid) == null
                && !serviceBrokerHelper().doesExist(cld, oid, obj);
        }
        store(obj, oid, cld, insert);

The insert should be false, as the PK fields are not null, and the objectCache for the backupBroker should give null.
I traced with P6Spy, but I can't detect a SELECT to determine the existence of the row, so I assume the objectCache.lookup(oid) returns true.

Any hints?

Bernd
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.