JPA PERSISTENCIA
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
Las Query permiten
encadenamiento demétodos
nov-08
Número máximo de filas a
recuperar desde la fijada por
setFirstResult()
Ejecuta la consulta y
devuelve una List()
de objetos User
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
6Enlace de parámetros
Enlace 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
Ajustesde rendimiento
nov-08
Alberto 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 MFAalb@uniovi.es
15
Partes de una consulta
Selecció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
Resultados
Tabla
Criterios de
selección de filas
Curso 2005-2006SELECT
SID2-GAP
Puede que haya
menos filas
(WHERE) y puede
que menos campos
(SELECT)
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.Objecto
select s from java.io.Serializable s
nov-08
Alberto MFA alb@uniovi.es
Tambié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
21Restricciones sobre
colecciones (WHERE)
En el WHERE
Se pueden complementar con funciones
nov-08
Alberto 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 loselementos proyectados (Item y Bid)
nov-08
Alberto MFA alb@uniovi.es
25
Proyección de escalares
En 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...
Regístrate para leer el documento completo.