Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Jpa QL
Jpa QL
Contenidos
nov-08
Preparacin y ejecucin
nov-08
Creacin
HQL y JPA QL
QBC y QBE
(Query By Criteria)
SQL Directo
nov-08 Alberto MFA alb@uniovi.es 4
Paginacin
El primer resultado es el 0
Nmero mximo de filas a recuperar desde la fijada por setFirstResult() Ejecuta la consulta y devuelve una List() de objetos User
nov-08
Enlace de parmetros
Lo que no se debe hacer
Qu hay en este string?
Enlace de parmetros
Enlace nominal (recomendado)
nov-08
Enlace de parmetros
Enlace posicional
El orden de parmetros no tiene por qu ser secuencial
Ajustes de rendimiento
nov-08
Ajustes de rendimiento
Los hints son todos dependientes de implementacin, no estndar JPA Si un hint no es soportado es ignorado silenciosamente
nov-08 Alberto MFA alb@uniovi.es 10
Hints: ejemplos
nov-08
11
Ejecucin
Se produce al invocar a:
getResultList() getSingleResult()
Excepcin si ms de uno o ninguno
nov-08
12
nov-08
13
nov-08
14
Consultas bsicas
nov-08
15
Restriccin
Filtrado de filas WHERE
Proyeccin
Seleccin de partes de las filas que pasan el filtro SELECT
nov-08 Alberto MFA alb@uniovi.es 16
Resultados Puede que haya menos filas (WHERE) y puede que menos campos (SELECT)
Curso 2005-2006
SID2-GAP
17
Seleccin (FROM)
SELECT en JPA QL, no necesario en HQL
select i from Item i
Restriccin (WHERE)
WHERE para filtrar filas
nov-08
19
Restriccin (WHERE)
nov-08
20
+
nov-08 Alberto MFA alb@uniovi.es 21
nov-08
22
JPA
Funciones
Hibernate
nov-08
23
Ordenacin
De la forma usual
nov-08
24
Proyeccin
(Esta consulta es intil ya que da un producto cartesiano)
nov-08
25
Proyeccin de escalares
nov-08
26
Tabla
+
Criterios de filtrado de filas
Resultados
28
Acceso a propiedad
Joins implcitos
Solo se permiten en caminos (path) que pasen a travs de asociaciones manyto-one o one-to-one El final del camino NO puede ser multivaluado
P.e. item.bids.amount es ilegal
nov-08
30
nov-08
31
Joins en FROM
Cuando el camino de asociaciones resulta en un conjunto
many-to-many one-to-many
nov-08
32
Joins en FROM
Tambin left y right join
Los Item %name% y sus Bids aunque haya Item que no tienen Bids
nov-08
33
nov-08
34
Si no pone left tambin carga de forma agresiva item y bidder pero solo los bids que tienen item y bidder nov-08
Nota: JPA por defecto carga eager asociaciones -to-one, es til si hay mapeo fetch=LAZY y se quiere forzar
Alberto MFA alb@uniovi.es 37
Se pueden cargar duplicados, para evitarlos No se puede usar un alias en SELECT ni WHERE
nov-08
39
Theta-style en WHERE
El ajuste del join se hace en el WHERE Es prctico para consultas sobre clases no asociadas
Da pares
nov-08
40
Comparacin de identificadores
equivalentes
Comparacin de id en ejecucin
nov-08
42
Consultas de agregados
nov-08
43
Funciones en SELECT
count() min() max() sum() avg()
nov-08
44
Consulta de totales
GROUP BY
+
Tabla
Criterios de seleccin de filas
Formacin de grupos
Funciones de agregados
Agrupamiento
Clusula GROUP BY (como en SQL)
Como en SQL cualquier propiedad o alias que aparezca en SELECT fuera de una funcin de agregado debe aparecer tambin en la clusula GROUP BY
nov-08
46
nov-08
47
Las consultas que no devuelven entidades pueden tener rendimiento al no meter resultados en contexto de persistencia
Cada fila devuelve un objeto de la clase que se especifica La clase debe existir y no necesita estar mapeada
Alberto MFA alb@uniovi.es 48
nov-08
Subselects
En SQL una subselect puede ir en SELECT, FROM o WHERE En JPA QL slo puede ir en el WHERE Las debe soportar la BDD
MySQL en versiones anteriores a 4.?? no tiene subselects
nov-08
49
Subselects
Correlada: puede tener peor rendimiento
Cuantificacin
Una subselect puede devolver una sola fila (normalmente agregados) o varias En el caso de varias se usan con cuantificacin
ALL, ANY (o SOME), IN
nov-08
51
Cuantificacin ejemplos
nov-08
52
nov-08
53