On 31/05/2010, at 11:11 PM, Andrus Adamchik wrote: > Good thoughts. I really like the adaptive strategy idea, which can probably > be used for discriminator-free vertical mapping as well.
I'm not sure about this though: at what point would a user need to start adding the discriminator to their historic data? How would they go about it? It sounds like you'd need to stick with a strategy from the start. (It certainly makes looking at data via sql easier with a discriminator too :) > BTW, semantically "vertical inheritance with discriminator" is essentially > single-table inheritance with flattened attributes in subclasses. Which > Cayenne supports already, but without any special optimizations for wide|deep > hierarchies. >> On Mon, May 31, 2010 at 8:29 AM, Andrus Adamchik <and...@objectstyle.org> >> wrote: >>> Great. this is the kind of feedback I was looking for :-) >>> >>> On May 31, 2010, at 8:17 AM, Mike Kienenberger wrote: >>>> What you're suggesting could work, but we have at least one very deep >>>> and wide inheritance tree in our current app, and the performance hit >>>> of joining more than a hundred tables (so far) unnecessarily would >>>> kill us. >>> >>> So how would you do a fetch based on discriminator column approach? I can >>> think of a 2 step process: >>> >>> 1. Fetch ID's + discriminator columns from the root table. >>> 2. Fully resolve objects, either doing joins only for the subset of tables >>> that appeared in result in #1, or doing a separate query (without joins) for >>> each subclass table matching the set of IDs. >>> >>> Does that sound right? Yep. >>> Also I am sort of in favor of my original discriminator-free approach for >>> smaller hierarchies, so wonder if a fetch strategy can be something >>> specified for a given super-entity and/or query. The discriminator-free approach sounds more complex to achieve for the initial cut though maybe? with regards, -- Lachlan Deck