Tecnologia
Sistemas de Persistencia de Objetos
Contenidos
nov-08
Alberto MFA alb@uniovi.es
2
Preparación y ejecución
nov-08
Alberto MFA alb@uniovi.es
3
Creación
HQL y JPA QL
QBC y QBE
(Query By Criteria)
SQL Directo
nov-08 Alberto MFA alb@uniovi.es 4
Paginación
El primer resultado es el 0
Número máximo de filas a recuperar desde lafijada por setFirstResult() Ejecuta la consulta y devuelve una List() de objetos User
Las Query permiten encadenamiento de métodos
nov-08
Alberto MFA alb@uniovi.es
5
Enlace de parámetros
Lo que no se debe hacer
¿Qué hay en este string?
¿Qué pasa si escriben esto en un formulario?
Es el problema de la SQL injection
nov-08 Alberto MFA alb@uniovi.es 6
Enlace de parámetrosEnlace nominal (recomendado)
setParameter() sobrecargado para java.util.Date, java.util.Calendar y Object (ver documentación)
nov-08
Alberto MFA alb@uniovi.es
7
Enlace de parámetros
Enlace posicional
El orden de parámetros no tiene por qué ser secuencial
¡Ojo! Se empieza en 1 setters sobrecargados
nov-08 Alberto MFA alb@uniovi.es 8
Ajustes de rendimiento
nov-08Alberto MFA alb@uniovi.es
9
Ajustes de rendimiento
Los “hints” son todos dependientes de implementación, no estándar JPA Si un hint no es soportado es ignorado silenciosamente
nov-08 Alberto MFA alb@uniovi.es 10
Hints: ejemplos
nov-08
Alberto MFA alb@uniovi.es
11
Ejecución
Se produce al invocar a:
getResultList() getSingleResult()
Excepción si más de uno o ninguno
Asíya no… pero puede no haber ninguno
nov-08
Alberto MFA alb@uniovi.es
12
Consultas con nombre
Se carga el string de la consulta desde mapeos createNamedQuery(…)
Query con anotaciones o en orm.xml
nov-08
Alberto MFA alb@uniovi.es
13
nov-08
Alberto MFA alb@uniovi.es
14
Consultas básicas
nov-08
Alberto MFA alb@uniovi.es
15
Partes de una consultaSelección
Fuente de datos FROM Una sola o combinación de ellas
Restricción
Filtrado de filas WHERE
Proyección
Selección de partes de las filas que pasan el filtro SELECT
nov-08 Alberto MFA alb@uniovi.es 16
Partes de una consulta
FROM WHERE SELECT
Tabla Criterios de selección de filas
Resultados Puede que haya menos filas (WHERE) y puede que menos campos (SELECT)
Curso 2005-2006SID2-GAP
17
Selección (FROM)
SELECT en JPA QL, no necesario en HQL
select i from Item i
Alias necesarios para condiciones sobre miembros
select i from Item as i select i from Item i
Las consultas son polimórficas
¡Sube toda la BDD!
select b from BillingDetail b select o from java.lang.Object o select s from java.io.Serializable s
nov-08 Alberto MFA alb@uniovi.esTambién polimorfismo sobre 18 interfaces
Restricción (WHERE)
WHERE para filtrar filas
nov-08
Alberto MFA alb@uniovi.es
19
Restricción (WHERE)
nov-08
Alberto MFA alb@uniovi.es
20
Operadores de comparación y precedencia
_
+
nov-08 Alberto MFA alb@uniovi.es 21
Restricciones sobre colecciones (WHERE)
En el WHERE Se pueden complementar con funciones
nov-08Alberto MFA alb@uniovi.es
22
JPA
Funciones
Hibernate
nov-08
Alberto MFA alb@uniovi.es
23
Ordenación
De la forma usual
nov-08
Alberto MFA alb@uniovi.es
24
Proyección
(Esta consulta es inútil ya que da un producto cartesiano)
Cada fila es un vector de los elementos proyectados (Item y Bid)
nov-08
Alberto MFA alb@uniovi.es
25
Proyección de escalaresEn la select pueden ir atributos de clases… … y resultados de funciones (las ya vistas)
nov-08
Alberto MFA alb@uniovi.es
26
Consulta sobre varias tablas
Tabla
+
Criterios de filtrado de filas
Resultados
Combinación de registros de las dos tablas Tabla
Curso 2005-2006 SID2-GAP 27
Joins: inner, left y right outer
Todos los Items con sus Bids
Los Items que...
Regístrate para leer el documento completo.