Re: Setting up horizontal inheritance
Re: Setting up horizontal inheritance
- Subject: Re: Setting up horizontal inheritance
- From: Paul Hoadley <email@hidden>
- Date: Sat, 1 Nov 2008 16:25:00 +1030
On 01/11/2008, at 3:17 PM, Chuck Hill wrote:
On Oct 31, 2008, at 9:39 PM, Paul Hoadley wrote:
After finding "Subclass Entity" in Entity Modeler, and re-making
the child entity specifying horizontal inheritance, this question
remains:
On 01/11/2008, at 11:19 AM, Paul Hoadley wrote:
2. Practical WebObjects (p. 32) states that horizontal
inheritance "puts a complete copy of each entity into a separate
table". Does EOF do this for me? That is, if I use
_AMPerson.createAMPerson(), does EOF put a row in the 'amperson'
table, and a corresponding row in the 'person' table?
I've just used _AMPerson.createAMPerson() to create a new
AMPerson. There's a new row in 'amperson', and nothing in
'person'. Have I misunderstood "complete copy" here? That is,
should there be a corresponding new row in 'person', or not?
No, Person will remain empty as it is abstract. Each concrete
entity is written to its own table. One row (and hence one table)
is written per EO.
OK. Tell me if this complicates things: Person is "abstract" in this
particular app, in that all I will be creating is AMPersons. But
Person is in a separate EO model, in a stand-alone framework. I
haven't marked Person abstract in Entity Modeler, as for some
applications it might be enough and I would actually instantiate it.
Are you sure you want Horizontal Inheritance?
Not completely.
Single table is usually the best choice.
I chose HI because I wanted to avoid what Lachlan describes in another
mail:
For both VI and STI you usually define a column in the parent (e.g.,
called entityType) that's populated on awakeFromInsertion with e.g.,
if (entityType() == null) setEntityType(entityName());
In the model you then in each child entity set the definition for
the restricting qualifier to e.g., (entityType like 'EntityName').
Maybe I should take a step back. I assumed I wanted inheritance at
all because I have a basic EO called Person in a model in a utility
framework, and in a particular app I want to add three relationships
to app-specific EOs. (In other apps, Person might be sufficient as it
is, and I would instantiate it as an EO.) Is this an example of where
one would use inheritance? Is HI a bad choice, and should I use STI
instead?
--
Paul.
w http://logicsquad.net/
h http://paul.hoadley.name/
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden