Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Hibernate. Programando más... - 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:
Bueno, vamos a empezar a programar ya para recuperar información. Voy a cerrar todas estas pestañas que tenemos por aquí y voy a hacer algún programa. No sé si aquí hice algo. De momento no lo salvo. No sé lo que hice.
00:00:00
vamos a hacer algún programa aparte de principal en el cual perfectamente
00:00:17
podíamos trabajar e insertar algo
00:00:24
voy a intentar ahora recuperar información
00:00:29
voy a copiar este ficherito mismo de principal
00:00:32
este ficherito mismamente, principal lo voy a copiar
00:00:35
por evitarme escribir algo
00:00:40
voy a poner recuperar información
00:00:44
voy a llamar así
00:00:48
voy a cerrar el otro
00:00:49
y simplemente es por aprovechar
00:00:55
la primera parte del código
00:00:57
solamente el tema
00:00:59
de las transacciones
00:01:00
en este caso no voy a verlas porque no voy a crear
00:01:04
nada, con lo cual
00:01:06
todo esto lo puedo dejar así
00:01:07
y
00:01:10
tengo ya preparado
00:01:12
una parte de mi programa
00:01:15
muy bien
00:01:17
¿cuál es mi idea?
00:01:18
Pues mi idea principal es recuperar, por ejemplo, toda la información del departamento número 10, que sabemos que el departamento número 10 es este que tenemos aquí de antes, el departamento este que tenía varias personas por ahí, el de producción.
00:01:20
¿De acuerdo? Bueno, pues una vez que yo tengo esto, voy a empezar a buscar información.
00:01:34
Lo primero es cargar el departamento correspondiente a la clase al objeto cuyo identificador es el 10.
00:01:43
Para ello, yo puedo crear un departamento, un departamento D, que sea un nuevo departamento.
00:01:51
Y en este nuevo departamento, AD, yo le puedo asignar una sesión en la cual cargue,
00:02:07
y ya vemos que aquí aparecen un montón de cabeceras posibles.
00:02:16
yo lo que quiero es cargar la clase departamento
00:02:21
y el argumento que le quiero pasar
00:02:24
es el 10, ¿de acuerdo? Con esto cargo
00:02:32
el departamento 10. Muy bien, vamos a ver
00:02:36
si esto nos va dando la información que yo pretendo. Entonces voy a poner
00:02:40
simplemente una salida en la cual
00:02:44
me salga el nombre del departamento
00:02:48
voy a poner de.getNombre
00:02:52
estaría muy bien, get.getNombre
00:02:56
de este departamento, voy a poner también que nos devuelva
00:03:00
su identificador
00:03:05
el identificador
00:03:07
a ver que están saliendo cosas raras
00:03:10
algo así, vale
00:03:15
No voy a avanzar más, de momento voy a dejarlo ahí y después voy a obtener todos los empleados de ese departamento.
00:03:19
Voy a ejecutar para ver si esto nos da algún problema o funciona correctamente.
00:03:30
Bueno, pues ya vemos aquí la salida, 10 producción, o sea, perfectamente ha funcionado esto que tenemos aquí, todo el código que tenemos aquí.
00:03:36
voy a abrir la consola por si hubiera algún error
00:03:45
que se nos pasara, pero no, todo está en la información
00:03:48
que tenemos
00:03:50
de hibernate
00:03:51
y después está la salida
00:03:53
perfecto, una vez que sabemos que esto está
00:03:56
funcionando correctamente, vamos a ver
00:03:58
que empleados tiene
00:03:59
este departamento
00:04:02
bueno, pues vamos, sabemos
00:04:03
que empleados los podemos obtener directamente
00:04:07
con de punto
00:04:10
get
00:04:11
empleados, y que esto nos devuelve un conjunto
00:04:13
Entonces, yo podría decir, for un empleado e get empleados, muéstrame, por ejemplo, el nombre del empleado y su salario.
00:04:16
bueno, estoy poniendo aquí directamente unos campos que no existen
00:04:42
tendría que poner llamar al subguete, estoy aquí haciéndolo muy deprisa
00:04:51
y aquí el nombre claramente me está dando un error porque yo tendría que decir su nombre
00:04:55
bueno, pues vamos a ver si esto nos funciona
00:05:00
vamos a ejecutar, carga todo lo de hibernate
00:05:06
y efectivamente, voy a ampliar la consola
00:05:12
dice que en producción está Juan Velasco y María García
00:05:14
y lo que gana cada uno de ellos.
00:05:19
Con lo cual ya vemos que prescindiendo completamente
00:05:23
de un lenguaje de interrogación a la base de datos
00:05:28
obtenemos toda la información que requerimos.
00:05:30
Este mismo ejemplo lo podríamos haber resuelto de otra manera
00:05:36
utilizando el lenguaje HQL.
00:05:39
En este caso hemos cargado directamente el departamento 10
00:05:42
mediante este load.
00:05:46
Bueno, nosotros podemos, voy a poner aquí el ejemplo ya hecho, realizar una sentencia de HQL que diga from departamento donde el id sea igual a 10, con lo cual creamos una query con ese HQL y devolvemos un único resultado.
00:05:47
Hacemos un test-card de departamento y ya tenemos también este departamento
00:06:05
Esto además nos permite que aquí podamos buscar por cualquier información
00:06:10
Cuando sabemos que solamente vamos a devolver un único resultado
00:06:15
Vamos a ejecutarlo
00:06:19
Bueno, aquí vemos que otra vez nos sale perfectamente
00:06:21
Que nos sale perfectamente la misma información que teníamos antes
00:06:29
¿De acuerdo?
00:06:36
¿Qué ocurre cuando la información no va a devolver múltiples elementos?
00:06:39
Realmente lo que vamos a obtener es una lista de algo. Vamos a ver ese ejemplo como podría ser.
00:06:43
Entonces nosotros tenemos aquí una lista, creamos un query, este query from departamento, con lo cual nos devolverá todos los departamentos,
00:06:50
y a este query le aplicamos una lista. A esta lista de departamentos le aplicamos un iterador y vamos preguntando
00:07:02
que mientras que haya, vamos obteniendo el siguiente y lo vamos mostrando.
00:07:11
Este sería nuestro ejemplo.
00:07:16
Vamos a ejecutarlo y efectivamente vemos aquí abajo que nos ha devuelto finanzas y producción,
00:07:19
los dos que tenemos funcionando.
00:07:28
El lenguaje HQL es muy rico y podemos ir a ver parte de sus características en la propia Ibernet,
00:07:33
con lo cual podemos ver todas las características que nos ofrece.
00:07:43
Y efectivamente tiene cláusulas del tipo WHERE, ORDER, GROUP, etc.
00:07:46
Y, por supuesto, declaraciones para modificación de la información.
00:07:50
Este, les recomiendo que se lean esto tranquilamente y vean qué cosas nos aporta el propio lenguaje.
00:07:56
También podemos preparar sentencias.
00:08:05
Podríamos haber dicho que no supiéramos aquí el dato y haber puesto una variable que después vamos a rellenar.
00:08:07
Por lo cual, aquí, una vez que creamos nuestra sentencia query, podríamos, antes de decir que la ejecute,
00:08:14
podríamos haber dicho que insertemos en ese valor de id el valor correspondiente.
00:08:24
Vamos a separar esta sentencia, vamos a ir separando cosas de aquí, voy a crear la query, tal cual,
00:08:31
esto después lo voy a dejar por aquí atrás
00:08:39
creamos nuestra query
00:08:41
Q con esta estructura
00:08:46
perfecto, una vez que tenemos esa query
00:08:52
podemos decirle que establezcamos un valor entero
00:08:55
un tejer, en esa posición
00:08:59
que hemos llamado id con el valor 10
00:09:03
ya tenemos ese valor
00:09:07
Y ahora ya podríamos aplicar en departamento, podríamos aplicarle el resultado de esto que tenemos aquí.
00:09:09
Vamos a ver, q.uniqueResult.
00:09:22
Entonces ya con esta información podríamos obtener el mismo resultado.
00:09:37
vamos a ejecutar
00:09:43
esto y efectivamente
00:09:47
vemos que nos aparece el mismo resultado que teníamos antes
00:09:51
como igual que en SQL es más seguro siempre pasar
00:09:55
los parámetros de esta manera a escribirlos en la propia sentencia
00:09:59
a pesar de que podamos hacerlo
00:10:03
ya para ir finalizando vamos a ver la diferencia
00:10:05
entre cargar un objeto
00:10:10
que sabemos que existe o que no exista. Vamos a poner aquí
00:10:15
un objeto que no exista. Vamos a poner el departamento 99.
00:10:19
Y vamos a ejecutar. Voy a quitar todo lo que tengo
00:10:24
por aquí, para que no nos incordien. Esto
00:10:27
y esto. Y voy a
00:10:32
ejecutar esta sentencia. Una vez que aparece
00:10:36
Toda esta información vemos que lo que ha ocurrido es que aquí nos aparece una excepción,
00:10:43
en la cual dice que el objeto no ha sido encontrado.
00:10:51
¿De acuerdo?
00:10:54
Tenemos otra manera de hacerlo, que es con el método de verde load, el método get.
00:10:55
Vamos a ver con get qué nos ocurriría.
00:11:00
Entonces, en este caso también va a saltar una excepción,
00:11:06
pero de otro tipo que dice excepción de que nos devuelve un puntero a nulo
00:11:09
la diferencia consiste en que yo en este caso me puede devolver el departamento
00:11:16
o bien, si D es igual a nulo
00:11:22
pues puedo mostrar aquí un mensaje en el cual tranquilamente por digo
00:11:27
el departamento no existe
00:11:32
y si no, pues me haces todo lo que aparece por aquí
00:11:36
bueno, una vez que hago este código
00:11:42
pues vamos a ver cómo quedaría
00:11:48
y efectivamente vamos a obtener al final
00:11:52
el departamento no existe
00:11:54
lo recuperamos sin excepción
00:11:56
en el caso de load
00:11:58
habría que comprobar que no salte una excepción
00:11:59
entonces habría que hacer un bloque try
00:12:03
para realizar esta misma sentencia
00:12:05
son dos instituciones similares
00:12:08
pero en una hay que tratar una excepción
00:12:11
y en la otra simplemente comprobar
00:12:13
que nos devuelve algo
00:12:15
que es el caso de null
00:12:16
bueno, han sido una serie de vídeos
00:12:18
simplemente de introducción
00:12:23
a lo que es todo el entorno
00:12:25
URM y específicamente
00:12:27
el entorno de Hibernate
00:12:29
y ahora ya es el momento
00:12:31
de profundizar
00:12:34
y ya lo dejo en sus manos
00:12:35
mucha suerte y adelante
00:12:37
Gracias.
00:12:40
- Idioma/s:
- Autor/es:
- Amadeo Mora
- Subido por:
- Amadeo M.
- Licencia:
- Dominio público
- Visualizaciones:
- 163
- Fecha:
- 31 de marzo de 2021 - 9:03
- Visibilidad:
- Público
- Centro:
- IES CLARA DEL REY
- Duración:
- 12′ 42″
- Relación de aspecto:
- 16:9 Es el estándar usado por la televisión de alta definición y en varias pantallas, es ancho y normalmente se le suele llamar panorámico o widescreen, aunque todas las relaciones (a excepción de la 1:1) son widescreen. El ángulo de la diagonal es de 29,36°.
- Resolución:
- 908x512 píxeles
- Tamaño:
- 23.40 MBytes