20260120 JPA_7 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Entonces, en algún sitio, será en el DAO, por supuesto, porque los JPQLs están en el DAO, porque es la parte que toca los datos.
00:00:01
En algún sitio habrá que poner esta JPQLs, esta sí que tiene un WHERE, WHERE e.departamento.id sea igual a 2.id departamento.
00:00:09
Aunque bueno, aquí puedo poner el nombre que quiera, porque luego lo fijo.
00:00:28
y de
00:00:31
vale, entonces
00:00:33
y esta query va siempre
00:00:35
tendrá que ir acompañada
00:00:37
como selecciona un e
00:00:39
esta query tendrá que ir acompañada
00:00:40
de empleado.class
00:00:43
vale
00:00:45
porque las queries
00:00:47
aquí veis llevan siempre
00:00:49
cuando creamos
00:00:52
la query
00:00:54
la sentencia jpql
00:00:54
y al ladito
00:00:57
la clase a la que devuelves.
00:00:59
Entonces, esta query de aquí
00:01:03
la tendremos que poner en algún sitio.
00:01:06
¿Por qué todo el rato?
00:01:11
Así.
00:01:14
La tendremos que poner en algún sitio
00:01:15
que vaya acompañada de esto.
00:01:16
Luego no pega que yo meta esto
00:01:19
en departamento de implementación,
00:01:21
porque en departamento de implementación
00:01:23
la propiedad tipo
00:01:24
es departamento.class
00:01:28
aquí es que he puesto departamento.class
00:01:30
pero habría sido más bonito si hubiera puesto tipo
00:01:32
¿verdad? porque tipo es
00:01:33
la propiedad tipo que aquí está oculta
00:01:35
pero que está heredando de implementación DAO
00:01:38
entonces
00:01:40
en departamento
00:01:41
implementación DAO no pega
00:01:43
porque aquí no va a ir departamento.class
00:01:45
ahí va a ir empleado.class
00:01:48
entonces sería más bonito si yo me hago
00:01:49
un empleado
00:01:52
esta misma de aquí, departamento
00:01:54
de implementación, la voy a copiar, pero luego le cambio el nombre, porque yo quiero
00:01:56
una como esta, pero de empleado ahora, entonces esta, hacemos una copia y una pega aquí,
00:02:01
y la llamamos empleado, empleado implementación DAO, la llamamos, ahora, esta empleado implementación
00:02:10
Dao
00:02:29
Cuidado
00:02:30
Recibe empleado
00:02:33
Punto class
00:02:36
Es lo que recibe
00:02:38
Empleado punto class
00:02:42
Vale
00:02:43
Ah, no le he puesto el extens
00:02:44
Ah, bueno, claro, es que el extens
00:02:49
Es de empleado
00:02:51
Vale
00:02:53
Empleado, hereda de la implementación
00:02:55
Pero era para empleado
00:02:58
Recibe esto en su variable tipo
00:02:59
Y ahora este método es el que no quiero. El que quiero ahora ya sí que es public list empleado, get empleados de un departamento por el ID del departamento.
00:03:01
y ahora
00:03:28
ahora ya si que será el
00:03:33
query bla bla bla
00:03:35
poniendo esa query
00:03:37
y esto voy a
00:03:39
lo podéis
00:03:42
copiar de aquí
00:03:46
y ahora lo cambiamos
00:03:47
y ahora
00:03:49
este me va a devolver
00:03:56
una lista de
00:03:59
empleado
00:04:01
empleado
00:04:03
Y ahora la query era esta otra
00:04:05
Que había puesto yo aquí
00:04:08
La query es esta
00:04:09
Y aquí puedo poner
00:04:11
En lugar de empleado.class voy a poner tipo
00:04:21
Que queda más bonito
00:04:24
Vale, entonces, a ver
00:04:25
Fijo
00:04:34
Mi query
00:04:36
Seleccioname todos los empleados
00:04:38
Donde el departamento
00:04:41
Sea este, le fijo
00:04:43
El departamento id para que sea este de aquí
00:04:45
GetSingResult, no
00:04:47
lógicamente porque aquí no es un único resultado aquí es un punto de tres un
00:04:49
list todos los resultados y ahora ya esto este nombre es muy feo aquí lo
00:04:57
llamo así no porque ahí no es tan feo porque es que en volver en una opción a
00:05:07
una lista, me duele hasta a mí.
00:05:28
Y
00:05:31
devolver una lista
00:05:31
es que
00:05:34
mi gran duda, es probable
00:05:36
que esto te devuelva una lista vacía, no un null.
00:05:38
Sino que el resultado de este
00:05:40
JPQL no lo sé, habría que comprobarlo.
00:05:42
Si no hay nadie, te devuelva una
00:05:44
lista vacía, que es diferente a null.
00:05:46
Entonces meterlo en un optional ahí. Pero habría que
00:05:48
comprobarlo, porque no estoy segura que ese select
00:05:50
devuelve un null o lista vacía. Yo creo que lista
00:05:52
vacía, pero no lo sé.
00:05:54
Entonces ahora ya tenemos
00:05:56
El DAO en el sitio correcto
00:05:57
Y ahora aquí
00:05:59
Implementamos
00:06:00
El que acabamos de hacer
00:06:03
Y ya está
00:06:05
Empleado
00:06:06
Implementación DAO
00:06:10
Donde le pasamos el entity manager
00:06:12
Y ahora ya está
00:06:23
Return
00:06:38
DAO.
00:06:39
Empleado
00:06:41
Get empleados
00:06:42
Id
00:06:45
Retun
00:06:46
Que he hecho mal
00:06:50
Y de Depto
00:06:52
Vale, entonces
00:06:53
Vamos a comprobar rápidamente si en el caso de que no tenga
00:07:00
Devuelve nul o lista vacía
00:07:03
Y así
00:07:04
¿Qué me falta por cerrar?
00:07:05
El en.close
00:07:07
Claro, tienes toda la razón
00:07:08
Claro, sí, sí, sí
00:07:21
Qué tontería más gorda
00:07:23
Sí, sí, sí, lo tengo que guardar, claro
00:07:24
qué espabilados estáis
00:07:26
para luego digáis que vuestro futuro va a ser negro
00:07:31
vale, vale, no, eso lo dice tu amigo
00:07:34
que dice todo el rato
00:07:40
yo me voy a morir de hambre
00:07:41
estoy deprimido porque el futuro es negro
00:07:43
eso lo dice él mucho más que yo
00:07:46
no, lo de son una mierda jamás
00:07:47
lo que dije es que el futuro estaba chungo
00:07:54
eso sí
00:07:56
Hombre, no era para tanto
00:07:57
Ahora ya sí
00:08:07
Ahora ya sí
00:08:12
Ahora ya sí lo tenemos bien hecho
00:08:13
Vamos ya a probarlo
00:08:21
Desde el main 2, dejamos unos métodos
00:08:23
Planteados para que hagáis en vuestros ratos libres
00:08:24
Y ya está
00:08:27
A ver, le dije que en algún momento
00:08:29
Pero hoy en particular
00:08:40
Pues nada
00:08:42
A ver
00:08:43
No os morís de la ansiedad
00:08:49
Vale
00:08:54
Vamos a probar
00:08:55
Voy a quitarle al departamento 3, por ejemplo, le voy a quitar empleados para solucionar esa duda que nos tiene, bueno, por ejemplo, en el 10 no tengo a nadie, ¿verdad? En el departamento 10 no tengo a nadie. Y hay un departamento 10. Vale, pues voy a ver los empleados del departamento 10 a ver si me da nulo o lista vacía. Eso, eso, porque si no, no nos podemos ir.
00:08:57
Pero es que es todo de boquilla
00:09:23
No sé por qué ocurre
00:09:30
¿No os pasa a vosotros?
00:09:34
Es que tienes el índice de la derecha
00:09:35
Más rápido que el de la izquierda
00:09:37
Será, vale
00:09:39
Vale, entonces
00:09:40
Esto tengo es
00:09:44
Recuperar empleados
00:09:47
Departamento
00:09:49
Y habíamos dicho que en el 10 yo no tengo nada
00:09:50
Y ahora
00:09:52
Vamos a
00:09:57
La prueba de fuego
00:10:00
Que es esta
00:10:05
A ver si me sale vacío
00:10:08
O me sale un pom
00:10:13
Vale
00:10:16
Entonces esto para no liar
00:10:25
Lo quito de ahí
00:10:27
Mi intuición era cierta
00:10:29
No te devuelve un null sino una lista vacía
00:10:42
Es que sería muy cutre
00:10:45
Si devolviera un null el jpql
00:10:46
Con un sel
00:10:48
vale, no devuelve nada
00:10:49
porque no tengo a nadie, pero si le doy el empleado
00:10:51
en el 1 sí que trabaja gente
00:10:53
en el 1 sí trabajan
00:10:55
manías, ya sé que son manías
00:10:58
de vieja, lo sé
00:11:03
pero el play de arriba me pone muy
00:11:05
nerviosa hasta que no me asegure de que
00:11:07
lo que está en el historial es
00:11:09
que normalmente en el historial se queda lo último
00:11:10
que has ejecutado, entonces
00:11:13
le das al play y ya está, pero
00:11:15
Ah, listo
00:11:17
Mi programa está a prueba
00:11:36
de Null Pointer Exception
00:11:39
Vale
00:11:40
Sí, no, es que no sabía
00:11:45
pero, a ver, intuía que no podía ser
00:11:48
tan frágil
00:11:50
¿Vale? Entonces, estos métodos que hemos hecho aquí nosotros, como veis, no nos hayan cuajado. Es que no han necesitado transacción. De hecho, no hemos hecho ningún begin transaction con el em ni commit.
00:11:52
No las hemos hecho porque como solo eran consultas
00:12:13
Si hiciéramos métodos
00:12:16
Que ya sí que hicieran
00:12:17
Tendríamos que hacerlo con la transacción
00:12:19
Entonces vamos a dejar planteados aquí
00:12:21
Unos métodos
00:12:23
Exacto
00:12:25
Vamos a dejar planteados aquí
00:12:28
Uy, qué miedo me das
00:12:29
Me dan tus preguntas
00:12:33
Uf, entonces no me pregunto
00:12:34
Pero no tengo ni idea
00:12:37
Dime
00:12:38
Me he creado un DAD empleado
00:12:39
porque en mi arquitectura
00:12:56
de aquí, yo estoy usando
00:12:58
JPQL
00:13:00
y a JPQL le tengo que pasar aquí el tipo
00:13:01
entonces yo podría poner ahí
00:13:04
empleado
00:13:06
podría meter esto en el DAO
00:13:08
y poner ahí empleado.class
00:13:10
y ya está
00:13:12
claro, pero has llamado
00:13:14
desde un método a otro
00:13:30
en la misma línea horizontal
00:13:32
Claro, pero la has llamado
00:13:34
Sí, en un ratín
00:13:43
¿Quién es?
00:13:45
Ah, creía que era Alejandra
00:13:47
Que ha venido a...
00:13:48
¿Por uno de vosotros?
00:13:51
No, igual a vos
00:13:52
Ah
00:13:53
No sé
00:13:54
Vale, ¿qué es lo que has hecho?
00:14:01
Espera un momento que paremos aquí.
00:14:05
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Segundo Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 1
- Fecha:
- 27 de enero de 2026 - 12:59
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 14′ 10″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 67.48 MBytes