You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Sebastian <no...@gmx.net> on 2004/06/01 18:40:29 UTC

Mapping question

Hi,
I'm trying to map some tables with OJBs but don't know how to express 
their relation. Maybe someone can give me a hint.

I have three tables:
articles with OID as primary key
categories with OID as primary key
custom_fields with OID as primary key, OID_FK as foreign key

OID is generated uniquely over all tables in a format: "first 3 letters 
of the table name" plus a "incrementing value". E.g. 
cat01,art02,art03,cus04.

An article as well as a category can have a custom field that is stored 
in the custom_fields table, the OID_FK is the OID of the related article 
or category. The first three letters of OID indicate the "object type" 
article or category.

How do I have to configure the repository.xml so that always the right 
object (a category or an article) is referenced by an customField object?

Thanks in advance,
Sebastian


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


RE: Mapping question

Posted by Daniel Perry <d....@netcase.co.uk>.
I'm not sure how OJB does it, but that would either mean a lot of queries,
or an awful lot of outer joins!

I wouldn't of thought there was a way to tell OJB to pick tables based on
their foreign id. Generally you use references to exact types, or supertypes
that are extended by a few classes.

I think the correct way to deal with this is by using extents.  I say this
because in the java class that references another object, you will have to
use the same approach.

Lets say you have a classes A,B,C,D, etc

If in A it has a reference to myFriend: as you don't know the type of
myFriend (could be A, B, C, D, etc), you can only refer to something that
all these classes extend (or implement).

So,

class A extends BaseClass {
	BaseClass myFriend;
}

and all the classes muse extend BaseClass.

I'm not sure what it is you're trying to map, but I've never come across a
case where you always need to refer to any class.

You could use extents like this, and use this where you need to reference
*any* object, but you could still reference a type directly where you know
what it will be.

So if you know that myFriendFKID will always be a B:

class A extends BaseClass {
	B myFriend;
}

You can just use a reference descriptor in the repository referencing the
type B, not the BaseClass extent.

Hope this clarifies things,

Daniel.



> -----Original Message-----
> From: news [mailto:news@sea.gmane.org]On Behalf Of Sebastian
> Sent: 02 June 2004 17:47
> To: ojb-user@db.apache.org
> Subject: Re: Mapping question
>
>
> Hi Daniel,
>
> I had a look at the extents now. I think this will basically work. The
> problem I see is, that the database has 110 tables and all are using a
> globally generated OID. In my basic class I would have to list all other
> classes as extents of this one.
>
> What does this mean for the performance of OJB? will OJB now query all
> 110 tables to find the right object?
>
> Since I know quite easily based on the first 3 letters of the OID what
> type it is, can I somehow tell that OJB as a hint to search the
> right table?
>
> Sebastian
>
> Daniel Perry wrote:
>
> > What about using an extent and having both types extend it.  It
> would pick
> > the right class based on whichever table has an item with that
> primary key.
> >
> > Daniel.
> >
> >
> >>-----Original Message-----
> >>From: news [mailto:news@sea.gmane.org]On Behalf Of Sebastian
> >>Sent: 02 June 2004 17:07
> >>To: ojb-user@db.apache.org
> >>Subject: Re: Mapping question
> >>
> >>
> >>To simplify my question:
> >>
> >>I have a table containing a foreign key column and the foreign key of a
> >>row points to different tables based on the first three letters of the
> >>foreign key. E.g. when it starts with "art" then it points to a record
> >>in the article table. When it starts with "cat" then it points to a
> >>category table.
> >>
> >>This means OJB should based on the first three letters of the foreign
> >>key know what kind of object to reference.
> >>
> >>What kind of custom mapper or converter or whatever do I have to write.
> >>
> >>Thanks,
> >>Sebastian
> >>
> >>
> >>Sebastian wrote:
> >>
> >>>Hi,
> >>>I'm trying to map some tables with OJBs but don't know how to express
> >>>their relation. Maybe someone can give me a hint.
> >>>
> >>>I have three tables:
> >>>articles with OID as primary key
> >>>categories with OID as primary key
> >>>custom_fields with OID as primary key, OID_FK as foreign key
> >>>
> >>>OID is generated uniquely over all tables in a format: "first 3 letters
> >>>of the table name" plus a "incrementing value". E.g.
> >>>cat01,art02,art03,cus04.
> >>>
> >>>An article as well as a category can have a custom field that is stored
> >>>in the custom_fields table, the OID_FK is the OID of the
> >>
> >>related article
> >>
> >>>or category. The first three letters of OID indicate the "object type"
> >>>article or category.
> >>>
> >>>How do I have to configure the repository.xml so that always the right

> >>>object (a category or an article) is referenced by an
> >>
> >>customField object?
> >>
> >>>Thanks in advance,
> >>>Sebastian
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Mapping question

Posted by Sebastian <no...@gmx.net>.
Hi Daniel,

I had a look at the extents now. I think this will basically work. The 
problem I see is, that the database has 110 tables and all are using a 
globally generated OID. In my basic class I would have to list all other 
classes as extents of this one.

What does this mean for the performance of OJB? will OJB now query all 
110 tables to find the right object?

Since I know quite easily based on the first 3 letters of the OID what 
type it is, can I somehow tell that OJB as a hint to search the right table?

Sebastian

Daniel Perry wrote:

> What about using an extent and having both types extend it.  It would pick
> the right class based on whichever table has an item with that primary key.
> 
> Daniel.
> 
> 
>>-----Original Message-----
>>From: news [mailto:news@sea.gmane.org]On Behalf Of Sebastian
>>Sent: 02 June 2004 17:07
>>To: ojb-user@db.apache.org
>>Subject: Re: Mapping question
>>
>>
>>To simplify my question:
>>
>>I have a table containing a foreign key column and the foreign key of a
>>row points to different tables based on the first three letters of the
>>foreign key. E.g. when it starts with "art" then it points to a record
>>in the article table. When it starts with "cat" then it points to a
>>category table.
>>
>>This means OJB should based on the first three letters of the foreign
>>key know what kind of object to reference.
>>
>>What kind of custom mapper or converter or whatever do I have to write.
>>
>>Thanks,
>>Sebastian
>>
>>
>>Sebastian wrote:
>>
>>>Hi,
>>>I'm trying to map some tables with OJBs but don't know how to express
>>>their relation. Maybe someone can give me a hint.
>>>
>>>I have three tables:
>>>articles with OID as primary key
>>>categories with OID as primary key
>>>custom_fields with OID as primary key, OID_FK as foreign key
>>>
>>>OID is generated uniquely over all tables in a format: "first 3 letters
>>>of the table name" plus a "incrementing value". E.g.
>>>cat01,art02,art03,cus04.
>>>
>>>An article as well as a category can have a custom field that is stored
>>>in the custom_fields table, the OID_FK is the OID of the
>>
>>related article
>>
>>>or category. The first three letters of OID indicate the "object type"
>>>article or category.
>>>
>>>How do I have to configure the repository.xml so that always the right
>>>object (a category or an article) is referenced by an
>>
>>customField object?
>>
>>>Thanks in advance,
>>>Sebastian


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


RE: Mapping question

Posted by Daniel Perry <d....@netcase.co.uk>.
What about using an extent and having both types extend it.  It would pick
the right class based on whichever table has an item with that primary key.

Daniel.

> -----Original Message-----
> From: news [mailto:news@sea.gmane.org]On Behalf Of Sebastian
> Sent: 02 June 2004 17:07
> To: ojb-user@db.apache.org
> Subject: Re: Mapping question
>
>
> To simplify my question:
>
> I have a table containing a foreign key column and the foreign key of a
> row points to different tables based on the first three letters of the
> foreign key. E.g. when it starts with "art" then it points to a record
> in the article table. When it starts with "cat" then it points to a
> category table.
>
> This means OJB should based on the first three letters of the foreign
> key know what kind of object to reference.
>
> What kind of custom mapper or converter or whatever do I have to write.
>
> Thanks,
> Sebastian
>
>
> Sebastian wrote:
> > Hi,
> > I'm trying to map some tables with OJBs but don't know how to express
> > their relation. Maybe someone can give me a hint.
> >
> > I have three tables:
> > articles with OID as primary key
> > categories with OID as primary key
> > custom_fields with OID as primary key, OID_FK as foreign key
> >
> > OID is generated uniquely over all tables in a format: "first 3 letters
> > of the table name" plus a "incrementing value". E.g.
> > cat01,art02,art03,cus04.
> >
> > An article as well as a category can have a custom field that is stored
> > in the custom_fields table, the OID_FK is the OID of the
> related article
> > or category. The first three letters of OID indicate the "object type"
> > article or category.
> >
> > How do I have to configure the repository.xml so that always the right
> > object (a category or an article) is referenced by an
> customField object?
> >
> > Thanks in advance,
> > Sebastian
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Mapping question

Posted by Sebastian <no...@gmx.net>.
To simplify my question:

I have a table containing a foreign key column and the foreign key of a 
row points to different tables based on the first three letters of the 
foreign key. E.g. when it starts with "art" then it points to a record 
in the article table. When it starts with "cat" then it points to a 
category table.

This means OJB should based on the first three letters of the foreign 
key know what kind of object to reference.

What kind of custom mapper or converter or whatever do I have to write.

Thanks,
Sebastian


Sebastian wrote:
> Hi,
> I'm trying to map some tables with OJBs but don't know how to express 
> their relation. Maybe someone can give me a hint.
> 
> I have three tables:
> articles with OID as primary key
> categories with OID as primary key
> custom_fields with OID as primary key, OID_FK as foreign key
> 
> OID is generated uniquely over all tables in a format: "first 3 letters 
> of the table name" plus a "incrementing value". E.g. 
> cat01,art02,art03,cus04.
> 
> An article as well as a category can have a custom field that is stored 
> in the custom_fields table, the OID_FK is the OID of the related article 
> or category. The first three letters of OID indicate the "object type" 
> article or category.
> 
> How do I have to configure the repository.xml so that always the right 
> object (a category or an article) is referenced by an customField object?
> 
> Thanks in advance,
> Sebastian


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org