Note that we already have open JIRA issues on creating prototypes. It's just that no one's gotten around to implementing it yet. For example,
https://issues.apache.org/cayenne/browse/CAY-225 On 5/30/07, Andrus Adamchik <[EMAIL PROTECTED]> wrote:
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 > >