Difference between revisions of "EclipseLink/Examples/JPA/QueryOptimization"

From Eclipsepedia

Jump to: navigation, search
(Via Annotations)
Line 2: Line 2:
  
 
== Via Annotations ==
 
== Via Annotations ==
 +
 +
=== Batch Reading ===
 +
Configures the query to optimize the retrieval of the related objects, the related objects for all the resulting objects will be read in a single query (instead of n queries). Valid values are strings that represent JPQL style navigations to a relationship.
 +
<p>e.g. e.manager.phoneNumbers
 +
 
<code><pre>
 
<code><pre>
 
@Entity
 
@Entity
Line 11: Line 16:
 
     @QueryHint(
 
     @QueryHint(
 
       name=EclipseLinkQueryHints.BATCH,  
 
       name=EclipseLinkQueryHints.BATCH,  
       value=EclipseLinkQueryHints.BATCH),
+
       value="e.manager.phoneNumbers"),
 
     @QueryHint(
 
     @QueryHint(
 
       name=EclipseLinkQueryHints.FETCH,  
 
       name=EclipseLinkQueryHints.FETCH,  

Revision as of 15:57, 15 October 2007

EclipseLink allows users the option to optimize their queries using batch and joined reading through the use of a query hint.

Via Annotations

Batch Reading

Configures the query to optimize the retrieval of the related objects, the related objects for all the resulting objects will be read in a single query (instead of n queries). Valid values are strings that represent JPQL style navigations to a relationship.

e.g. e.manager.phoneNumbers

@Entity
@Table(name="JPA_EMPLOYEE")
@NamedQuery(
  name="findEmployeeByPK",
  query="SELECT OBJECT(employee) FROM Employee employee WHERE employee.id = :id"),
  hints={
    @QueryHint(
      name=EclipseLinkQueryHints.BATCH, 
      value="e.manager.phoneNumbers"),
    @QueryHint(
      name=EclipseLinkQueryHints.FETCH, 
      value=EclipseLinkQueryHints.FETCH),
  }
)
public class Employee implements Serializable {
...

}

Via XML

<entity name="Employee" class="org.eclipse.testing.Employee" access="PROPERTY">
  ...
  <named-query name="findAllEmployeesByFirstName">
    <query>SELECT OBJECT(employee) FROM Employee employee WHERE employee.firstName = :firstname</query>
    <hint name="eclipselink.batch" value="eclipselink.batch">
    <hint name="eclipselink.join-fetch" value="eclipselink.join-fetch">
  </named-query>
  ...
</entity>