Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Hibernate. Programando más... - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 31 de marzo de 2021 por Amadeo M.

163 visualizaciones

Descargar la transcripción

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
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:
es
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid