Más contenido relacionado
La actualidad más candente (19)
15 jpaql
- 2. Query API
Professional Open Source™
The EntityManager interface methods for creating query instances,
the Query interface methods that define and execute the query, and
JPQL are referred to as the query API.
© JBoss, Inc. 2003, 2004. 2
- 3. Defining named queries
Professional Open Source™
You must create a named (or static) query before you can use it. It is
defined either in the entity using annotations, or in the XML file
defining O/R mapping metadata.
© JBoss, Inc. 2003, 2004. 3
- 4. Creating a query instance
Professional Open Source™
The EntityManager interface provides several methods to
create queries using either JPQL or native SQL statements.
© JBoss, Inc. 2003, 2004. 4
- 5. Creating a named query instance
Professional Open Source™
© JBoss, Inc. 2003, 2004. 5
- 6. Creating a dynamic query instance
Professional Open Source™
© JBoss, Inc. 2003, 2004. 6
- 7. Setting parameters for a query
Professional Open Source™
Setting Positional Parameters
Setting Named parameters
© JBoss, Inc. 2003, 2004. 7
- 8. Retrieving a single entity
Professional Open Source™
If your query retrieves multiple instances of Category entities
with the same name, it will throw
NonUniqueResultException. The persistence provider will
throw NoResultException when your query does not
retrieve any result.
These exceptions will not roll back the active transactions.
Retrieving an entity using getSingleResult does not require an
active transaction.
However, if no transactions are available, the retrieved entity
will be detached after retrieval.
© JBoss, Inc. 2003, 2004. 8
- 9. Retrieving a collection of entities
Professional Open Source™
If getResultList does not retrieve any results for a query, it
returns an empty list. No exceptions are thrown.
Retrieving a collection does not require an
active transaction, and if one isn’t available, the retrieved
entities will be detached after retrieval.
© JBoss, Inc. 2003, 2004. 9
- 11. Specifying query hints
Professional Open Source™
A query hint is a tip that is used by the persistence
provider while executing queries or retrieving entities.
For example, a hint can be a directive to the persistence provider
whether to use a cache while executing a query.
© JBoss, Inc. 2003, 2004. 11
- 14. Professional Open Source™
Hibernate provides HSQL, while JDO-compliant providers such as
BEA’s Kodo support JDO QL to query entities.
JPQL is an extension of EJB QL, the query language of EJB 2.
© JBoss, Inc. 2003, 2004. 14
- 15. How is JPQL Different from SQL?
Professional Open Source™
JPQL operates on classes and objects (entities) in the Java space.
SQL operates on tables, columns, and rows in the database space.
While JPQL and SQL look similar to us, they operate in two very
different worlds.
© JBoss, Inc. 2003, 2004. 15
- 16. Professional Open Source™
The JPQL Query Parser or Processor Engine of a persistence
provider, as shown in below figure, translates the JPQL query into
native SQL for the database being used by the persistence provider.
© JBoss, Inc. 2003, 2004. 16
- 19. Identifying the query domain: naming an entity
Professional Open Source™
© JBoss, Inc. 2003, 2004. 19
- 20. What is a path expression?
Professional Open Source™
Expressions such as c.categoryName and c.categoryId are known as
path expressions
A path expression is an identifier variable followed by the navigation
operator (.), and a persistence or association field.
An association field can contain either a single-value object or a
collection. The association fields that represent one-to-many and
many-to-many associations are collections of types, and such a path
expression is a collection-value path expression.
Here c.items is collection-value path expression
© JBoss, Inc. 2003, 2004. 20
- 21. Professional Open Source™
If the association is either many-to-one or one-to-one, then the
association fields are of a specific object type, and those types are
known as single value path expressions
For example,
c.items.user.firstName
c.items.user.contactDetails.email
© JBoss, Inc. 2003, 2004. 21
- 22. Conditional expressions and operators
Professional Open Source™
A condition in the WHERE clause that filters results from a query is
known as a conditional expression.
Operators supported by JPQL :
© JBoss, Inc. 2003, 2004. 22
- 23. Using a range with BETWEEN
Professional Open Source™
© JBoss, Inc. 2003, 2004. 23
- 24. Using the IN operator
Professional Open Source™
© JBoss, Inc. 2003, 2004. 24
- 25. Using the LIKE operator
Professional Open Source™
© JBoss, Inc. 2003, 2004. 25
- 26. Dealing with null values and empty collections
Professional Open Source™
You can use the IS NULL or IS NOT NULL operator to check whether
a single-value path expression contains null or not null values.
For Example,
WHERE c.parentCategory IS NOT NULL
You cannot use the IS NULL expression to compare a path
expression that is of type collection. You have to use
IS [NOT] EMPTY
For Example,
SELECT c
FROM Category c
WHERE c.items IS EMPTY
© JBoss, Inc. 2003, 2004. 26
- 27. Checking for the existence of an entity in a collection
Professional Open Source™
© JBoss, Inc. 2003, 2004. 27
- 36. Theta-joins
Professional Open Source™
© JBoss, Inc. 2003, 2004. 36
- 37. Inner Join
Professional Open Source™
SELECT u
FROM User u INNER JOIN u.Category c
WHERE u.userId LIKE ?1
The INNER clause is optional.
Remember that when you use the JOIN operator by itself, an inner
join is always performed
© JBoss, Inc. 2003, 2004. 37
- 38. Outer joins
Professional Open Source™
© JBoss, Inc. 2003, 2004. 38
- 39. Fetch joins
Professional Open Source™
© JBoss, Inc. 2003, 2004. 39
- 40. Native SQL queries
Professional Open Source™
Using dynamic queries with native SQL
© JBoss, Inc. 2003, 2004. 40
- 41. Using a named native SQL query
Professional Open Source™
© JBoss, Inc. 2003, 2004. 41