Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-2099

Reuse relationship selection

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Reopened
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

              ppoddar@apache.org Pinaki Poddar
              ppoddar@apache.org Pinaki Poddar
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - 1,008h
                  1,008h
                  Remaining:
                  Remaining Estimate - 1,008h
                  1,008h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified