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"
< EclipseLink | Examples | JPA
(→Via Annotations) |
(→Batch Reading) |
||
Line 3: | Line 3: | ||
== 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. | 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 | <p>e.g. e.manager.phoneNumbers | ||
+ | === Via Annotations === | ||
<code><pre> | <code><pre> | ||
@Entity | @Entity |
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
Via Annotations
@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>