You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by Marcin Skladaniec <ma...@ish.com.au> on 2008/08/03 03:16:26 UTC
model enhancements for inheritance
Hi
I'm going to add support for horizontal inheritance to cayenne. I've
already added functionality for an entity to be abstract (https://issues.apache.org/cayenne/browse/CAY-794
), now the second part.
Current implementation of inheritance allows only one of two
parameters set: "inheritance" or "table/view"
If inheritance is selected the ObjEntity does not have any own
DbEntity or DbAttributes, it gets them only from the parent ObjEntity.
(although it has all the ObjAttributes defined in model)
Table/view is a simple approach where the ObjEntity gets its
attributes from its definition in model, there is no parent ObjEntity.
For horizontal inheritance ObjEnity.getAttributes() should return both
the attributes defined in model as well as from parent ObjEntity. Yet
having both parameters accepted at the same time might now do it well
enough, therefore I would like to propose adding yet another parameter
to the model: "inheritance db relationship". On database level the
horizontal inheritance is nothing more than a one-to-one relationship
between two tables, and reflecting this in the model will be required
to route the queries and inserts correctly.
Did I miss something ? Is that the right approach ?
Marcin
Re: model enhancements for inheritance
Posted by Andrus Adamchik <an...@objectstyle.org>.
On Aug 5, 2008, at 9:35 AM, Marcin Skladaniec wrote:
>> I think you are talking about VERTICAL inheritance, not horizontal
>> here. In case of horizontal you wouldn't have a relationship
>> between subclass/superclass tables. Anyways, assuming we are
>> discussing vertical inheritance, yes, there is a relationship
>> involved. Per JPA approach, this relationship can be figured
>> automatically : it is a 1..1 relationship between the PK's of two
>> tables. So we don't have to store it in XML, as we can find it in
>> runtime. Still internally there should be a concept of a
>> relationship joining parent and child tables, so you are right
>> about the big picture.
>>
> I'm now confused with vertical-horizontal naming. You say vertical,
> jira https://issues.apache.org/cayenne/browse/CAY-795says
> horizontal. I guess we talk about the same thing anyway, but just to
> be sure: I'm trying to model a database schema where there are 3
> tables: Artwork, Painting and Sculpture.
> Artwork is an abstract entity with its own table
> Painting and Sculpture are extending Artwork, but have their own
> tables as well.
> You are suggesting that both superclass and subclass should have PK,
> this means yet another table in required to link the two tables.
> This seems odd to me as the relationship is simple 1..1, is that a
> requirement of JPA ?
> I'm reading up on JPA, but I cannot find it.
I guess CAY-795 is just not specific enough. It says "horizontal" in
the title, but the steps to implement it are described in a rather
generic fashion. Not sure if we have a separate Jira for vertical?
Maybe Ari can open a new Jira on that.
Thanks,
Andrus
Re: model enhancements for inheritance
Posted by Lachlan Deck <la...@gmail.com>.
On 06/08/2008, at 12:09 AM, Andrus Adamchik wrote:
> Cool. I also think we need a separate Jira for vertical inheritance.
> Many implementation steps may overlap with horizontal, but this
> would be good for the RELEASE-NOTES and overall clarity.
Let me know too what from last years discussion what concepts/ideas
needed further clarification.
> On Aug 5, 2008, at 9:45 AM, Aristedes Maniatis wrote:
>
>>
>> On 05/08/2008, at 11:35 PM, Marcin Skladaniec wrote:
>>
>>> I'm now confused with vertical-horizontal naming. You say
>>> vertical, jira https://issues.apache.org/cayenne/browse/CAY-795
>>> says horizontal. I guess we talk about the same thing anyway, but
>>> just to be sure: I'm trying to model a database schema where there
>>> are 3 tables: Artwork, Painting and Sculpture.
>>> Artwork is an abstract entity with its own table
>>> Painting and Sculpture are extending Artwork, but have their own
>>> tables as well.
>>> You are suggesting that both superclass and subclass should have
>>> PK, this means yet another table in required to link the two
>>> tables. This seems odd to me as the relationship is simple 1..1,
>>> is that a requirement of JPA ?
>>> I'm reading up on JPA, but I cannot find it.
>>
>> I'll have a bit of a chat to Marcin about this on the phone and get
>> him up to speed where this was left off.... I've got some
>> documentation to show him before we need to bring this back on the
>> list.
with regards,
--
Lachlan Deck
Re: model enhancements for inheritance
Posted by Andrus Adamchik <an...@objectstyle.org>.
Cool. I also think we need a separate Jira for vertical inheritance.
Many implementation steps may overlap with horizontal, but this would
be good for the RELEASE-NOTES and overall clarity.
Andrus
On Aug 5, 2008, at 9:45 AM, Aristedes Maniatis wrote:
>
> On 05/08/2008, at 11:35 PM, Marcin Skladaniec wrote:
>
>> I'm now confused with vertical-horizontal naming. You say vertical,
>> jira https://issues.apache.org/cayenne/browse/CAY-795 says
>> horizontal. I guess we talk about the same thing anyway, but just
>> to be sure: I'm trying to model a database schema where there are 3
>> tables: Artwork, Painting and Sculpture.
>> Artwork is an abstract entity with its own table
>> Painting and Sculpture are extending Artwork, but have their own
>> tables as well.
>> You are suggesting that both superclass and subclass should have
>> PK, this means yet another table in required to link the two
>> tables. This seems odd to me as the relationship is simple 1..1, is
>> that a requirement of JPA ?
>> I'm reading up on JPA, but I cannot find it.
>
> I'll have a bit of a chat to Marcin about this on the phone and get
> him up to speed where this was left off.... I've got some
> documentation to show him before we need to bring this back on the
> list.
>
> Ari
>
>
>
> -------------------------->
> ish
> http://www.ish.com.au
> Level 1, 30 Wilson Street Newtown 2042 Australia
> phone +61 2 9550 5001 fax +61 2 9550 4001
> GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A
>
>
>
Re: model enhancements for inheritance
Posted by Aristedes Maniatis <ar...@ish.com.au>.
On 05/08/2008, at 11:35 PM, Marcin Skladaniec wrote:
> I'm now confused with vertical-horizontal naming. You say vertical,
> jira https://issues.apache.org/cayenne/browse/CAY-795 says
> horizontal. I guess we talk about the same thing anyway, but just to
> be sure: I'm trying to model a database schema where there are 3
> tables: Artwork, Painting and Sculpture.
> Artwork is an abstract entity with its own table
> Painting and Sculpture are extending Artwork, but have their own
> tables as well.
> You are suggesting that both superclass and subclass should have PK,
> this means yet another table in required to link the two tables.
> This seems odd to me as the relationship is simple 1..1, is that a
> requirement of JPA ?
> I'm reading up on JPA, but I cannot find it.
I'll have a bit of a chat to Marcin about this on the phone and get
him up to speed where this was left off.... I've got some
documentation to show him before we need to bring this back on the list.
Ari
-------------------------->
ish
http://www.ish.com.au
Level 1, 30 Wilson Street Newtown 2042 Australia
phone +61 2 9550 5001 fax +61 2 9550 4001
GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A
Re: model enhancements for inheritance
Posted by Marcin Skladaniec <ma...@ish.com.au>.
On 04/08/2008, at 12:56 AM, Andrus Adamchik wrote:
>
> On Aug 2, 2008, at 9:16 PM, Marcin Skladaniec wrote:
>
>> Hi
>>
>> I'm going to add support for horizontal inheritance to cayenne.
>> I've already added functionality for an entity to be abstract (https://issues.apache.org/cayenne/browse/CAY-794
>> ), now the second part.
>
> BTW, I don't recall those patches being committed. Which patches out
> of the 3 files there should go in? Is it just the latest one
> (abstract-obj-entity.diff)?
Ari is taking care of this, sorry that I did so many files. i did not
know I could use the same file name to override the old ones.
>
>
>
>> Current implementation of inheritance allows only one of two
>> parameters set: "inheritance" or "table/view"
>> If inheritance is selected the ObjEntity does not have any own
>> DbEntity or DbAttributes, it gets them only from the parent
>> ObjEntity. (although it has all the ObjAttributes defined in model)
>> Table/view is a simple approach where the ObjEntity gets its
>> attributes from its definition in model, there is no parent
>> ObjEntity.
>
> Correct.
>
>> For horizontal inheritance ObjEnity.getAttributes() should return
>> both the attributes defined in model as well as from parent
>> ObjEntity.
>> Yet having both parameters accepted at the same time might now do
>> it well enough, therefore I would like to propose adding yet
>> another parameter to the model: "inheritance db relationship". On
>> database level the horizontal inheritance is nothing more than a
>> one-to-one relationship between two tables, and reflecting this in
>> the model will be required to route the queries and inserts
>> correctly.
>>
>> Did I miss something ? Is that the right approach ?
>> Marcin
>
> I think you are talking about VERTICAL inheritance, not horizontal
> here. In case of horizontal you wouldn't have a relationship between
> subclass/superclass tables. Anyways, assuming we are discussing
> vertical inheritance, yes, there is a relationship involved. Per JPA
> approach, this relationship can be figured automatically : it is a
> 1..1 relationship between the PK's of two tables. So we don't have
> to store it in XML, as we can find it in runtime. Still internally
> there should be a concept of a relationship joining parent and child
> tables, so you are right about the big picture.
>
I'm now confused with vertical-horizontal naming. You say vertical,
jira https://issues.apache.org/cayenne/browse/CAY-795 says horizontal.
I guess we talk about the same thing anyway, but just to be sure: I'm
trying to model a database schema where there are 3 tables: Artwork,
Painting and Sculpture.
Artwork is an abstract entity with its own table
Painting and Sculpture are extending Artwork, but have their own
tables as well.
You are suggesting that both superclass and subclass should have PK,
this means yet another table in required to link the two tables. This
seems odd to me as the relationship is simple 1..1, is that a
requirement of JPA ?
I'm reading up on JPA, but I cannot find it.
Best wishes
Marcin
Re: model enhancements for inheritance
Posted by Andrus Adamchik <an...@objectstyle.org>.
Cool. Yeah, I just noticed that the Jira is assigned to you.
Andrus
On Aug 3, 2008, at 11:10 AM, Aristedes Maniatis wrote:
>
> On 04/08/2008, at 12:56 AM, Andrus Adamchik wrote:
>
>> BTW, I don't recall those patches being committed. Which patches
>> out of the 3 files there should go in? Is it just the latest one
>> (abstract-obj-entity.diff)?
>
> I've got them in my queue to commit and will do so in the next few
> days. I've spoken to Marcin about which bits need cleaning up already.
>
> Ari
>
>
>
> -------------------------->
> ish
> http://www.ish.com.au
> Level 1, 30 Wilson Street Newtown 2042 Australia
> phone +61 2 9550 5001 fax +61 2 9550 4001
> GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A
>
>
>
Re: model enhancements for inheritance
Posted by Aristedes Maniatis <ar...@ish.com.au>.
On 04/08/2008, at 12:56 AM, Andrus Adamchik wrote:
> BTW, I don't recall those patches being committed. Which patches out
> of the 3 files there should go in? Is it just the latest one
> (abstract-obj-entity.diff)?
I've got them in my queue to commit and will do so in the next few
days. I've spoken to Marcin about which bits need cleaning up already.
Ari
-------------------------->
ish
http://www.ish.com.au
Level 1, 30 Wilson Street Newtown 2042 Australia
phone +61 2 9550 5001 fax +61 2 9550 4001
GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A
Re: model enhancements for inheritance
Posted by Andrus Adamchik <an...@objectstyle.org>.
On Aug 2, 2008, at 9:16 PM, Marcin Skladaniec wrote:
> Hi
>
> I'm going to add support for horizontal inheritance to cayenne. I've
> already added functionality for an entity to be abstract (https://issues.apache.org/cayenne/browse/CAY-794
> ), now the second part.
BTW, I don't recall those patches being committed. Which patches out
of the 3 files there should go in? Is it just the latest one (abstract-
obj-entity.diff)?
> Current implementation of inheritance allows only one of two
> parameters set: "inheritance" or "table/view"
> If inheritance is selected the ObjEntity does not have any own
> DbEntity or DbAttributes, it gets them only from the parent
> ObjEntity. (although it has all the ObjAttributes defined in model)
> Table/view is a simple approach where the ObjEntity gets its
> attributes from its definition in model, there is no parent ObjEntity.
Correct.
> For horizontal inheritance ObjEnity.getAttributes() should return
> both the attributes defined in model as well as from parent ObjEntity.
> Yet having both parameters accepted at the same time might now do it
> well enough, therefore I would like to propose adding yet another
> parameter to the model: "inheritance db relationship". On database
> level the horizontal inheritance is nothing more than a one-to-one
> relationship between two tables, and reflecting this in the model
> will be required to route the queries and inserts correctly.
>
> Did I miss something ? Is that the right approach ?
> Marcin
I think you are talking about VERTICAL inheritance, not horizontal
here. In case of horizontal you wouldn't have a relationship between
subclass/superclass tables. Anyways, assuming we are discussing
vertical inheritance, yes, there is a relationship involved. Per JPA
approach, this relationship can be figured automatically : it is a
1..1 relationship between the PK's of two tables. So we don't have to
store it in XML, as we can find it in runtime. Still internally there
should be a concept of a relationship joining parent and child tables,
so you are right about the big picture.
Andrus