Yes, "prototype" is a much better word, and such change in
terminology is very important for this discussion to go forward, as
"interface" has a very specific meaning in OO development. Let's
definitely discuss it separately from the inheritance.
Andrus
On May 30, 2007, at 12:32 PM, Aristedes Maniatis wrote:
>
> On 30/05/2007, at 7:16 PM, Andrus Adamchik wrote:
>
>> What I am concerned about with DbEntity interfaces is that
>> DbEntities model database tables and there is no interface concept
>> in DB world. So I still don't understand why we need DbEntity
>> inheritance? Could you please elaborate or give some examples?
>>
>> The only use I can see for it is a *coincidental* match between
>> groups of attributes in multiple tables. So is it worth
>> complicating the mapping by introducing a concept with no analog
>> in the DB world? My suspicion is that it will be very hard to
>> explain to the users.
>
> Perhaps 'interface' is just the wrong word. The idea is similar to
> the WO prototype idea and the most common example is 'money' - you
> can define a money type once as having scale=2 and then just use
> that in all the dbEntity attributes.
>
> Interfaces in ObjEntities are completely different things again.
> They create actual interfaces in the Java classes. Perhaps we
> should also shed some of these extra ideas for now and focus on the
> main goals:
>
> 1. abstract classes
> 2. horizontal inheritance (where dbEntity=NULL for an objEntity)
> 3. vertical inheritance (where a special ObjRelationship is created
> to specify the superclass. There may also need to be a qualifier
> like with single table - Lachlan thinks yes, I'm dubious.)
>
> I believe that is the right order to implement the ideas (easiest
> to hardest).
>
>
>
> Simultaneously we can work on interfaces. This has two steps:
>
> 1. implement interfaces in the modeller, XML, datamap and class
> templates but have no runtime code in Cayenne for them. This is
> very easy and quite useful on its own.
> 2. implement the ability for SelectQuery to return a mixture of
> objEntities based on a query of the interface
>
> They don't really overlap that much except that some of the issues
> faced in making queries work may be applicable to both interfaces
> and inheritance.
>
>
> Finally we have dbEntity interfaces (prototypes) which maybe need
> another name and are something different again, but maybe we can
> cut them out of this whole conversation and return to them later?
> Lachlan, can we drop this one for now?
>
>
> Ari
>
>
> -------------------------->
> Aristedes Maniatis
> phone +61 2 9660 9700
> PGP fingerprint 08 57 20 4B 80 69 59 E2 A9 BF 2D 48 C2 20 0C C8
>
>
This archive was generated by hypermail 2.0.0 : Wed May 30 2007 - 05:44:52 EDT