Andrus Adamchik <andru..bjectstyle.org> wrote:
> AFAIK vertical inheritance
>
(http://developer.apple.com/documentation/LegacyTechnologies/WebObjects/WebObjects_4.5/System/Documentation/Developer/EnterpriseObjects/DevGuide/EOsII7.gif)
> is simply combining our current single table inheritance with a new
> flattened attributes feature. Meaning:
>
> 1. No template changes are needed.
> 2. Flattened attributes support is needed in the Modeler.
> 3. Flattened attributes support is needed in query translators and commit
> handlers.
>
> I am sure there will be some additional issues when combining flattened
> attributes with inheritance, but I think we need to start by implementing
> flattened attributes first.
>
> Am I missing something obvious?
This is probably a better link as it has more than just the picture :)
Yeah, it's primarily flattened attributes (if you're also including
flattened to-dependent-PK relationships).
But it also involves managing multiple object entities as if they were one
single entity (from the bottom up), and as single entities from the top
down.
(Side note: I don't understand the reasoning behind assigning a restricting
qualifier to parent entities on the EOF page. If I want to query against
"Person", then I want all Person records, not just Employee Persons -- I can
get those by querying against Employee).
> > "Gentry, Michael (Contractor)" <michael_gentr..anniemae.com> wrote:
> >> Ah, that's all the "easy" stuff. You still need to be able to handle
> >> queries on the subclass which references entities (not using a
> >> relationship) in the parent class. The would require modifying the
> >> Expression type classes.
> >
> > So what you're saying is that it's gonna require more than templates :)
> > It did all seem too easy, and I was sure I was overlooking something.
> >
> > Thanks!
> >
> >> -----Original Message-----
> >> From: Mike Kienenberger [mailto:mkienen..laska.net]
> >> Sent: Friday, May 20, 2005 11:53 AM
> >> To: cayenne-deve..bjectstyle.org
> >> Subject: Vertical inheritance support proposal
> >>
> >>
> >> I've been thinking a lot about how to implement vertical inheritance
> >> using
> >> Cayenne.
> >>
> >> These are the changes I see as necessary:
> >>
> >> 1) Specify a superEntity and the relationship pointing to that entity.
> >>
> >> For example, if I have Group and Organization, with Organization
> >> inheriting
> >> from Group, and having a dependent PK on Group, and a to-one
> >> relationship to
> >> group named "toGroup", then I need to both mark Group as the
> >> superEntity and
> >> mark "toGroup" as the superEntity relationship. I think this is the
> >> only
> >> change needed in the model and modeler.
> >>
> >> 2) Create templates to support vertical inheritance.
> >>
> >> These would basically delegate any read/writes to the superEntity for
> >> all
> >> superEntity attributes and relationships. Possibly also create a
> >> constructor creating the superentity and setting the relationship.
> >>
> >> 3) Change DataContext to modify superEntity status (recursively) when
> >> entity
> >> is registered/invalidated. Primarily, I see this as necessary for
> >> registering and invalidating a new entity. The templates can
> >> actually provide support for creation (call superEntity constructor
> >> in the constructor and set the relationship), and the delete rules
> >> can handle the
> >> case of deletion. Modification is already taken care of by the
> >> template
> >> delegation. There may be other DataContext changes necessary -- I
> >> haven't
> >> really looked over DC in detail to see if there's anything else i
> >> missed.
> >>
> >> ==
> >>
> >> Actually, I've went back and re-read Michael's original message on
> >> using
> >>
> >> setPersistenceState() to handle NEW (and could, by extension, handle
> >> HOLLOW)
> >> for registration/invalidation. So perhaps this could also be
> >> template-generated and handled in the DataObject as well.
> >>
> >> Also, since Vertical Inheritance relies on a dependant PK to the
> >> superEntity, perhaps that also doesn't need to be modeled. It'd be
> >> the only
> >> dependant-PK to-one relationship.
> >>
> >> So maybe it should all be handled by templating. The only "trick"
> >> would be
> >> getting a reference to the superEntity in the template, but that
> >> should be
> >> possible.
> >>
> >> Thoughts?
> >>
> >> As a first-attempt, this seems like the path of least resistance (and
> >> least-likely to break something). Being able to "see" vertical
> >> inheritance
> >> in the modeler (a la EOModeler) would be nice, but isn't a necessity.
> >>
> >> -Mike
>
>
>
This archive was generated by hypermail 2.0.0 : Fri May 20 2005 - 17:20:30 EDT