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 Jakob Braeuchi <jb...@gmx.ch> on 2004/12/08 20:51:45 UTC

Re: FEATURE REQUEST : specify foreign-key-attribute to use with colle ction descriptors instead of using primary of container class

hi roger,

imo this feature could be useful in some real life scenarios; even without an 
intermediate class like Acl in your example.

but i'd prefer to extend the inverse-foreignkey (called "referencing" in the 
following snippet, but this is just a temp name). if the referencing attribute 
is missing we assume the pk of the element-class-ref is used.

<class-descriptor class="ibanx.doc.Document"
      .....
      .....
      <collection-descriptor name="permissions"
element-class-ref="ibanx.security.Permission"
...
        <inverse-foreignkey field-ref="aclId"
	                   referencing="docAclId"/>
     </collection-descriptor>
</class-descriptor>

jakob

Janssen, Roger schrieb:
> Hi guys, i've got a question.
>  
> I am using 1.0-rc6.
>  
> Currently, using a collection descriptor, you specify the inverse-foreignkey
> attribute on the items of the collection, and these attributes are matched
> with the value of the primary key of the object that contains the
> collection.
>  
> However, consider the following (simplified) situation:
>  
>  
>     Document                   Acl                  Permission
>         id             ----------->  id   <---|                id
>         ...            |               ...       |                ...
>         ...            |                         |------------  aclId
>         aclId   -----|                                         ...
>         ...
>  
>  
> I have an class document, containing a foreignkey reference to a class Acl,
> and i have a class permission containing a foreignkey reference to an acl.
> The class document has an attribute acl populated by OJB by using a
> reference descriptor.
> The class Acl has an collection attribute permissions collected by OJB using
> a collection descriptor.
>  
> When a query for documents, using permission criteria, the query becomes
> complex, OJB joins document, acl and permission, using nested objects in
> criteria like "acl.permission.value" on a document instances. 
>  
> In plain sql, we could query joining document and permission on
> document.aclid = permission.aclid. 
> Using OJB, this currently is not possible, because i am not able to define a
> collection descriptor on document mapping permissions.
>  
> This would become possible, if we were able to specify a
> foreignkey-attribute on a collection descriptor. Example:
>  
> <class-descriptor class="ibanx.doc.Document"
>     .....
>     .....
>     <collection-descriptor name="permissions"
> element-class-ref="ibanx.security.Permission" 
>                        auto-retrieve="false" 
>                        auto-update="false" 
>                        auto-delete="false">
>             <inverse-foreignkey field-ref="aclId"/>
>             <foreignkey field-ref="aclId"/>
>     </collection-descriptor>
> </class-descriptor>
>  
> This collection descriptor defines a collection of Permissions on the
> document class, using aclId of document as foreignkey, matching
> it with aclid of Permission. I can use this descriptor for querying
> purposes, and now OJB only can to join the document and permission tables
> using nested objects in criteria like "permission.value" on a document
> instance.
>  
> Within our app, this kind of join pattern appears several times, sometimes
> even several times within one query, needless to say that we are
> experiencing some performance issues when the rather more complex queries
> are being executed, to a point were the application becomes not usable.
>  
> I tried to look what i had to change within OJB source code myself, so i
> could deliver a patch, but i noticed the complexity of the interaction
> between CollectionDescriptor, XMLHandlers and SQL statement generators. So i
> do not really know were to start.
>  
> So my question is, do you think this would be a usefull feature, and might
> it be implemented in the future.
> If it is obvious what needs to be changed, can onyone point me in the right
> direction, so i can patch the 1.0-rc6 version we are still using.
>  
> thanx,
>  
> Roger Janssen
> iBanx
> 

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


Re: FEATURE REQUEST : specify foreign-key-attribute to use with colle ction descriptors instead of using primary of container class

Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi roger,

when considering this feature we should not only focus on 1:n collections but on 
any relationships. i'd prefer to introduce feature for ojb 1.1 an not try to 
integrate it into 1.0.x

wdyt ?

jakob

Jakob Braeuchi schrieb:

> hi roger,
> 
> imo this feature could be useful in some real life scenarios; even 
> without an intermediate class like Acl in your example.
> 
> but i'd prefer to extend the inverse-foreignkey (called "referencing" in 
> the following snippet, but this is just a temp name). if the referencing 
> attribute is missing we assume the pk of the element-class-ref is used.
> 
> <class-descriptor class="ibanx.doc.Document"
>      .....
>      .....
>      <collection-descriptor name="permissions"
> element-class-ref="ibanx.security.Permission"
> ...
>        <inverse-foreignkey field-ref="aclId"
>                        referencing="docAclId"/>
>     </collection-descriptor>
> </class-descriptor>
> 
> jakob
> 
> Janssen, Roger schrieb:
> 
>> Hi guys, i've got a question.
>>  
>> I am using 1.0-rc6.
>>  
>> Currently, using a collection descriptor, you specify the 
>> inverse-foreignkey
>> attribute on the items of the collection, and these attributes are 
>> matched
>> with the value of the primary key of the object that contains the
>> collection.
>>  
>> However, consider the following (simplified) situation:
>>  
>>  
>>     Document                   Acl                  Permission
>>         id             ----------->  id   <---|                id
>>         ...            |               ...       |                ...
>>         ...            |                         |------------  aclId
>>         aclId   -----|                                         ...
>>         ...
>>  
>>  
>> I have an class document, containing a foreignkey reference to a class 
>> Acl,
>> and i have a class permission containing a foreignkey reference to an 
>> acl.
>> The class document has an attribute acl populated by OJB by using a
>> reference descriptor.
>> The class Acl has an collection attribute permissions collected by OJB 
>> using
>> a collection descriptor.
>>  
>> When a query for documents, using permission criteria, the query becomes
>> complex, OJB joins document, acl and permission, using nested objects in
>> criteria like "acl.permission.value" on a document instances.  
>> In plain sql, we could query joining document and permission on
>> document.aclid = permission.aclid. Using OJB, this currently is not 
>> possible, because i am not able to define a
>> collection descriptor on document mapping permissions.
>>  
>> This would become possible, if we were able to specify a
>> foreignkey-attribute on a collection descriptor. Example:
>>  
>> <class-descriptor class="ibanx.doc.Document"
>>     .....
>>     .....
>>     <collection-descriptor name="permissions"
>> element-class-ref="ibanx.security.Permission"                        
>> auto-retrieve="false"                        auto-update="false" 
>>                        auto-delete="false">
>>             <inverse-foreignkey field-ref="aclId"/>
>>             <foreignkey field-ref="aclId"/>
>>     </collection-descriptor>
>> </class-descriptor>
>>  
>> This collection descriptor defines a collection of Permissions on the
>> document class, using aclId of document as foreignkey, matching
>> it with aclid of Permission. I can use this descriptor for querying
>> purposes, and now OJB only can to join the document and permission tables
>> using nested objects in criteria like "permission.value" on a document
>> instance.
>>  
>> Within our app, this kind of join pattern appears several times, 
>> sometimes
>> even several times within one query, needless to say that we are
>> experiencing some performance issues when the rather more complex queries
>> are being executed, to a point were the application becomes not usable.
>>  
>> I tried to look what i had to change within OJB source code myself, so i
>> could deliver a patch, but i noticed the complexity of the interaction
>> between CollectionDescriptor, XMLHandlers and SQL statement 
>> generators. So i
>> do not really know were to start.
>>  
>> So my question is, do you think this would be a usefull feature, and 
>> might
>> it be implemented in the future.
>> If it is obvious what needs to be changed, can onyone point me in the 
>> right
>> direction, so i can patch the 1.0-rc6 version we are still using.
>>  
>> thanx,
>>  
>> Roger Janssen
>> iBanx
>>
> 
> ---------------------------------------------------------------------
> 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