Académique Documents
Professionnel Documents
Culture Documents
Contenidos
ene-09
Preparacin y ejecucin
ene-09
Creacin
HQL y JPA QL
QBC y QBE
(Query By Criteria)
SQL Directo
ene-09 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
ene-09
Enlace de parmetros
Lo que no se debe hacer
Qu hay en este string?
Enlace de parmetros
Enlace nominal (recomendado)
ene-09
Enlace de parmetros
Enlace posicional
El orden de parmetros no tiene por qu ser secuencial
Ajustes de rendimiento
ene-09
Ajustes de rendimiento
Los hints son todos dependientes de implementacin, no estndar JPA Si un hint no es soportado es ignorado silenciosamente
ene-09 Alberto MFA alb@uniovi.es 10
Hints: ejemplos
ene-09
11
Ejecucin
Se produce al invocar a:
getResultList() getSingleResult()
Excepcin si ms de uno o ninguno
ene-09
12
ene-09
13
ene-09
14
Consultas bsicas
ene-09
15
Restriccin
Filtrado de filas WHERE
Proyeccin
Seleccin de partes de las filas que pasan el filtro SELECT
ene-09 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
ene-09
19
Restriccin (WHERE)
ene-09
20
+
ene-09 Alberto MFA alb@uniovi.es 21
ene-09
22
JPA
Funciones
Hibernate
ene-09
23
Ordenacin
De la forma usual
ene-09
24
Proyeccin
(Esta consulta es intil ya que da un producto cartesiano)
ene-09
25
Proyeccin de escalares
ene-09
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
ene-09
31
Joins en FROM
Cuando el camino de asociaciones resulta en un conjunto
many-to-many one-to-many
ene-09
32
Joins en FROM
Tambin left y right join
Los Item %name% y sus Bids aunque haya Item que no tienen Bids
ene-09
33
ene-09
34
Si no pone left tambin carga de forma agresiva item y bidder pero solo los bids que tienen item y bidder ene-09
Se pueden cargar duplicados, para evitarlos No se puede usar un alias en SELECT ni WHERE
ene-09
39
Theta-style en WHERE
El ajuste del join se hace en el WHERE Es prctico para consultas sobre clases no asociadas
Da pares
ene-09
40
Comparacin de identificadores
equivalentes
Comparacin de id en ejecucin
ene-09
42
Consultas de agregados
ene-09
43
Funciones en SELECT
count() min() max() sum() avg()
ene-09
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
ene-09
46
ene-09
47
Las consultas que no devuelven entidades pueden tener ms rendimiento al no meter resultados en contexto de persistencia
ene-09
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
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
ene-09
49
Subselects
Correlada: puede tener peor rendimiento
Cuantificacin
Una subselect puede devolver una sola fila (normalmente resultado de una funcin de agregado) o varias En el caso de varias se usan con cuantificacin
ALL, ANY (o SOME), IN
ene-09
51
Cuantificacin ejemplos
ene-09
52
ene-09
53