You are lucky, this is already implemented. We called this feature query prefetching.
cheers, Thomas Scott Shealy wrote: > I was looking through the toplink api and they have a really nice > feature that really speeds up the performance of some queries when you > know you are going to access some of the children objects by going ahead > and loading them at initial query time. > > See the reference to the feature for this at (I think you have to have a > technet id but maybe not) > >http://technet.oracle.com/docs/products/ias/doc_library/90200doc_otn/toplink.903/b10064/performa.htm#1025931 > > > So for instance say you have 2 objects Item and Group > > Item has as a member exacty one group. > > Currently(at least with my limited knowledge of OJB) with a query by > collection you would generate N + 1 SQL statements. One for the query > of the Item Collection and one subsequent query to retrieve the Group > for each Item returned by the Query. It would be nice if you could > specify ahead of time that you wanted to go ahead and load both in the > same query. So a SQL statement like this would generated ... > > SELECT item.col1,item.col2,group.col1,group col2 > FROM item INNER JOIN group on group.group_id = item.group_id, > > This would really be a performance enhancement when you know you are > going to accessing the group ahead of time. > > In the top link api they use the following syntax to indicate that they > want to load the attribute in oneQuery, > > query.addJoinedAttribute("group.col2"); > > Then the persistence layer is able to examine that and know what to do. > > How would hard would this be to do for OJB? > > The toplink API is also able to handle loading children collections in > two queries using a select distinct sql statement after loading the > initial collection . > > I hope this made sense, if not please read the TOPLINK docs cause it > does a much better job of explaining this than me.. > > This feature would be really nice... > > Scott > > > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
