Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/Examples/JPA/QueryOptimization"
Line 1: | Line 1: | ||
[[Category:EclipseLink/Example/JPA|QueryOptimization]] | [[Category:EclipseLink/Example/JPA|QueryOptimization]] | ||
− | EclipseLink | + | EclipseLink gives users the option to optimize their queries using batch and joined reading through the use of a query hints. |
See: | See: | ||
* [[Optimizing_the_EclipseLink_Application_%28ELUG%29#Optimizing_Queries|Optimizing Queries]] in the ''[[EclipseLink/UserGuide|EclipseLink User's Guide]]'' | * [[Optimizing_the_EclipseLink_Application_%28ELUG%29#Optimizing_Queries|Optimizing Queries]] in the ''[[EclipseLink/UserGuide|EclipseLink User's Guide]]'' | ||
* [[Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Query_Customization_Extensions|Using EclipseLink JPA Query Customization Extensions]] in the ''[[EclipseLink/UserGuide|EclipseLink User's Guide]]'' | * [[Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Query_Customization_Extensions|Using EclipseLink JPA Query Customization Extensions]] in the ''[[EclipseLink/UserGuide|EclipseLink User's Guide]]'' | ||
− | * [[Optimizing_the_EclipseLink_Application_%28ELUG%29#How_to_Use_Batch_and_Join_Reading_for_Optimization|How to Use | + | * [[Optimizing_the_EclipseLink_Application_%28ELUG%29#How_to_Use_Batch_and_Join_Reading_for_Optimization|How to Use Batch and Join Reading]] in the ''[[EclipseLink/UserGuide|EclipseLink User's Guide]]'' |
* [http://www.eclipse.org/eclipselink/api/1.2/org/eclipse/persistence/config/QueryHints.html org.eclipse.persistence.config.QueryHints] | * [http://www.eclipse.org/eclipselink/api/1.2/org/eclipse/persistence/config/QueryHints.html org.eclipse.persistence.config.QueryHints] | ||
* Batch fetch example - [http://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/trunk/examples/org.eclipse.persistence.example.jpa.batch-fetch/batch-fetch.zip download link] - [http://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/trunk/examples/org.eclipse.persistence.example.jpa.batch-fetch/ SVN] | * Batch fetch example - [http://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/trunk/examples/org.eclipse.persistence.example.jpa.batch-fetch/batch-fetch.zip download link] - [http://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/trunk/examples/org.eclipse.persistence.example.jpa.batch-fetch/ SVN] |
Latest revision as of 13:54, 31 January 2013
EclipseLink gives users the option to optimize their queries using batch and joined reading through the use of a query hints.
See:
- Optimizing Queries in the EclipseLink User's Guide
- Using EclipseLink JPA Query Customization Extensions in the EclipseLink User's Guide
- How to Use Batch and Join Reading in the EclipseLink User's Guide
- org.eclipse.persistence.config.QueryHints
- Batch fetch example - download link - SVN
Contents
Batch Reading (Fetching)
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
Via Annotations
@Entity @Table(name="JPA_EMPLOYEE") @NamedQuery( name="findAllEmployees", query="SELECT e FROM Employee e order by e.id"), hints={ @QueryHint( name=QueryHints.BATCH, value="e.manager.phoneNumbers") } ) public class Employee implements Serializable { ... }
Via XML
<entity name="Employee" class="org.eclipse.testing.Employee" access="PROPERTY"> ... <named-query name="findAllEmployees"> <query>SELECT e FROM Employee e order by e.id</query> <hint name="eclipselink.batch" value="e.manager.phoneNumbers"> </named-query> ... </entity>
Joined Reading (Fetching)
Configures the query to optimize the retrieval of the related objects, the related objects will be joined into the query instead of being queried independently. This allows for nested join fetching which is not supported in JPQL. Valid values are strings that represent JPQL style navigations to a relationship. e.g. e.manager.phoneNumbers
Via Annotations
@Entity @Table(name="JPA_EMPLOYEE") @NamedQuery( name="findAllEmployeesByFirstName", query="SELECT OBJECT(employee) FROM Employee employee WHERE employee.firstName = :firstname"), hints={ @QueryHint( name=QueryHints.FETCH, value="e.manager.phoneNumbers") } ) 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.join-fetch" value="e.manager.phoneNumbers"> </named-query> ... </entity>