15 jpaql
Upcoming SlideShare
Loading in...5
×
 

15 jpaql

on

  • 193 views

 

Statistics

Views

Total Views
193
Views on SlideShare
193
Embed Views
0

Actions

Likes
0
Downloads
8
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

15 jpaql 15 jpaql Presentation Transcript

  • Professional Open Source™ JPA QL© JBoss, Inc. 2003, 2004. 07/17/04 1
  • 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
  • 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 View slide
  • 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 View slide
  • Creating a named query instance Professional Open Source™© JBoss, Inc. 2003, 2004. 5
  • Creating a dynamic query instance Professional Open Source™© JBoss, Inc. 2003, 2004. 6
  • Setting parameters for a query Professional Open Source™ Setting Positional Parameters Setting Named parameters© JBoss, Inc. 2003, 2004. 7
  • 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
  • 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
  • Paginating through a result list Professional Open Source™© JBoss, Inc. 2003, 2004. 10
  • 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
  • Specifying Query Hints in a NamedQuery Professional Open Source™© JBoss, Inc. 2003, 2004. 12
  • Professional Open Source™ Introduction to JPQL© JBoss, Inc. 2003, 2004. 13
  • 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
  • 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
  • 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
  • Defining and using SELECT Professional Open Source™© JBoss, Inc. 2003, 2004. 17
  • Defining UPDATE and DELETE Professional Open Source™© JBoss, Inc. 2003, 2004. 18
  • Identifying the query domain: naming an entity Professional Open Source™© JBoss, Inc. 2003, 2004. 19
  • 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
  • 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
  • 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
  • Using a range with BETWEEN Professional Open Source™© JBoss, Inc. 2003, 2004. 23
  • Using the IN operator Professional Open Source™© JBoss, Inc. 2003, 2004. 24
  • Using the LIKE operator Professional Open Source™© JBoss, Inc. 2003, 2004. 25
  • 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
  • Checking for the existence of an entity in a collection Professional Open Source™© JBoss, Inc. 2003, 2004. 27
  • String functions Professional Open Source™© JBoss, Inc. 2003, 2004. 28
  • Arithmetic functions Professional Open Source™© JBoss, Inc. 2003, 2004. 29
  • JPQL temporal functions Professional Open Source™© JBoss, Inc. 2003, 2004. 30
  • Aggregate functions Professional Open Source™© JBoss, Inc. 2003, 2004. 31
  • Grouping with GROUP BY and HAVING Professional Open Source™© JBoss, Inc. 2003, 2004. 32
  • Ordering the query result Professional Open Source™© JBoss, Inc. 2003, 2004. 33
  • Using subqueries Professional Open Source™© JBoss, Inc. 2003, 2004. 34
  • Subqueries using ANY,ALL,SOME Professional Open Source™© JBoss, Inc. 2003, 2004. 35
  • Theta-joins Professional Open Source™© JBoss, Inc. 2003, 2004. 36
  • 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
  • Outer joins Professional Open Source™© JBoss, Inc. 2003, 2004. 38
  • Fetch joins Professional Open Source™© JBoss, Inc. 2003, 2004. 39
  • Native SQL queries Professional Open Source™  Using dynamic queries with native SQL© JBoss, Inc. 2003, 2004. 40
  • Using a named native SQL query Professional Open Source™© JBoss, Inc. 2003, 2004. 41