Re: Modeling Interfaces [Was: Modelling improvements: inheritance + interfacing (Draft)]

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Wed May 30 2007 - 05:44:24 EDT

  • Next message: Ari Maniatis (JIRA): "[JIRA] Created: (CAY-794) Abstract objEntities"

    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