Re: vertical inheritance joins

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sun Jun 03 2007 - 05:12:26 EDT

  • Next message: Andrus Adamchik: "June board report"

    Hi Lachlan,

    On Jun 1, 2007, at 3:24 PM, Lachlan Deck wrote:
    > On 01/06/2007, at 7:32 PM, Andrus Adamchik wrote:
    >
    >> With this in mind we do not need an inheritance ObjRelationship,
    >> but we may use a DbRelationship to store join semantics (anybody
    >> mentioned that already??).
    >
    > Well the original suggestion I made was for <obj-entity
    > superRelationship="nameOfRelationship" ...> to allow for
    > specifically specifying vertical inheritance (which would have the
    > effect of not listing this relationship along with those returned
    > from objEntity.getRelationships() but via
    > objEntity.getSuperRelationship().

    This is what I was trying to avoid - introducing relationships with
    special behavior.

    > Are you suggesting that you'd prefer <db-entity
    > superRelationship="nameOfRelationship" ...>

    No, as DbEntities (tables) do not have inheritance among themselves.
    It would be more of <obj-entity
    superDbRelationship="nameOfDBRelationship" ...>, but I do believe
    that this can be made implicit, as arguably there can be only one
    DbRelationship between the primary keys of two tables. E.g:

    SuperOE -> DB1
    SubOE1 -> DB2
    SubOE2 -> DB3

    In this case Cayenne can easily figure out the name of DB2->DB1 and
    DB3->DB1 relationships based on relationship semantics.

    >> Another nice side effect of it is that such relationship is not a
    >> part of the object model (ObjRelationship would've been an object
    >> property). So there is nothing artificial about such mapping, and
    >> no new concepts are needed in Cayenne to map it.
    >
    > Can you clarify this a bit more.

    See above - I don't want to redefine what ObjRelationship is. The
    difference between Cayenne and EOF is that Cayenne splits DB and Java
    mapping in two separate layers of metadata. EOF allows to mark a
    relationship as "not included in the object model", while Cayenne
    allows to map the DB relationship without mapping corresponding
    ObjRelationship, essentially achieving the same thing in a different
    way.

    Andrus



    This archive was generated by hypermail 2.0.0 : Sun Jun 03 2007 - 05:12:47 EDT