Hi Wally,


Gelhar, Wallace J. wrote:
<snip>
There was a reason for this design.
Say there is an abstract class A and a concrete class B extending A. No
say there is a B instance b with a primary key value '17'.

If we do not use the toplevel extent to define Identies it could happen that OJB addresses this object as A{17} or as B{17}.
this result would violate base rules like
if x == y then id(x) == id(y)
<snip>


I'm confused...Why do you rely on == instead of .equals?  As application
developers, we have to correctly implement .equals and .hashCode() to
guarantee identity when using Java 2 Collections.  What is the reason
for using the address identity in OJB?

I was unprecise I meant if (x.equals(y) then id(x).equals(y) Of course OJB checks equality and not address identity!


The reason I ask is I have a similar scenario, a base class of Foo with two derived classes Foo_current and Foo_history used to store to an "active" table or a "historical" table. Foo_active is an empty class and history maintains some additional dates. In some cases, I want to access all Foo's, regardless of active or history, but need efficient access to the active Foo's when explicitly referenced. Currently, when I access the Foo_active, OJB will search all Foo_active and Foo_history (which is rather large) to find the object resulting in very slow response times.

Any advise?

I always thought that this was possible! Maybe we have a code regression here. We'll have to check this issue.


For the time being you could manipulate the extent descriptor at runtime to achieve different query behaviour.

cheers,
Thomas

Wally

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to