[ https://issues.apache.org/jira/browse/OPENJPA-2099?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13175853#comment-13175853 ] Albert Lee commented on OPENJPA-2099: ------------------------------------- Since SQLBuffer.getColumns() is a public method, it can NOT be removed because there are OpenJPA derived provider has a dependency on this method. This caused build failure after this change is committed. [INFO] Compilation failure C:\Users\leealber\tc\WASX\workspace\wsjpa.trunk\wsjpa-pdq-runtime\src\main\java\com\ibm\ws\persistence\pdq\meta\PDQParameterHandler.java:[54,23] cannot find symbol symbol : method getColumns() location: class org.apache.openjpa.jdbc.sql.SQLBuffer > Reuse relationship selection > ----------------------------- > > Key: OPENJPA-2099 > URL: https://issues.apache.org/jira/browse/OPENJPA-2099 > Project: OpenJPA > Issue Type: Improvement > Reporter: Pinaki Poddar > Assignee: Pinaki Poddar > Original Estimate: 1,008h > Remaining Estimate: 1,008h > > Related entities are often loaded via a separate select operation when an unloaded field is accessed. The select operation for a relationship field structurally (i.e. which tables it joins to or what columns it selects) is invariant at instance level. Only thing that changes across entity instances is the foreign/primary key identifier values used in joining. The major computation cost is paid to analyze to build the select structure by analyzing the mapping metadata of class/field involved. As noted, this computation is invariant for each instance access except the primary/foreign key values involved. > However, the core infrastructure for this frequent operation (because it is carried out whenever a relationship field is loaded for every instance) is not designed for reuse. The select gets constructed every time, the class/field mapping metadata gets analyzed every time, before the select is executed on the database. > What is required to avoid this repeated and unnecessary cost is to reuse a select instance computed for every relationship field only once but binding different parameters on every execution. > The task is non-trivial because of the select abstraction (a highly complex and critical data structure) is not designed with such parameter rebinding in mind. > This issue attempts to remedy that limitation. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira