Saltar navegación

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

Hibernate. Programando. - 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.

124 visualizaciones

Descargar la transcripción

Bueno, pues vamos aquí a crear una clase, vamos a crearnos una clase, la voy a llamar principal, simplemente, principal, simplemente es para probar que esto funciona, voy a crearla como que nos genere un main público ya para que ejecute algo y comprobar que esto funciona, el esquema de todo esto. 00:00:00
bien, pues lo primero que necesito 00:00:23
para trabajar es conectarme 00:00:26
a esa sesión, con lo cual 00:00:28
pues defino mi 00:00:30
session factory 00:00:32
ya empieza a enfadarse, es rápido 00:00:33
para enfadarse 00:00:37
con lo cual voy a seguir trabajando 00:00:38
por ejemplo, le puedo llamar 00:00:43
y le llamo 00:00:45
a section factory 00:00:47
y útil 00:00:49
get 00:00:50
session factory 00:00:53
muy bien 00:00:54
ahora ya se puede importar 00:00:57
de aquí y ya se nos limpia 00:01:01
bueno 00:01:04
voy a abrir una sesión, lo que ya es 00:01:05
una sesión, entonces la sesión 00:01:07
que voy a abrir es esta de aquí 00:01:09
voy a llamarla as directamente como sesión 00:01:11
y voy a llamar 00:01:13
asf open 00:01:16
sesión 00:01:17
ya como saben 00:01:19
si tengo algo 00:01:21
que he creado 00:01:23
por arriba directamente, me vengo abajo y ya la cierro 00:01:25
es la manera de que vaya abriendo y cerrando las cosas, ¿de acuerdo? 00:01:29
vale, voy a generar una transacción, voy a crear una transacción 00:01:34
lo que quiero, para que sepan ustedes lo que quiero hacer 00:01:38
es simplemente crear, añadir un departamento 00:01:41
no voy a hacer nada más de momento, entonces voy a llamar 00:01:46
a mi sesión y voy a comenzar, uy perdón, que he puesto ahí una coma 00:01:49
Voy a comenzar la transacción. Muy bien. Igual que la comienzo, al final de todo tendré que esta transacción, lo que quiero es que se ejecute. Aquí tengo, por tanto, un commit. 00:01:54
no ve el problema cual es 00:02:08
y dice que añada 00:02:16
un casting, no, pues esto es que ha puesto 00:02:17
la transacción mal puesta, de acuerdo 00:02:20
estoy cogiendo el commit que no es 00:02:22
seguramente tiene que ver 00:02:24
con esto, voy a quitar este java x de aquí 00:02:26
arriba para que vean que va a ser otro problema 00:02:28
porque seleccionamos algo que no es lo que 00:02:30
queremos, me voy a ir 00:02:32
a tcommit otra vez 00:02:34
tcommit 00:02:35
y vemos que había hasta uno de 00:02:37
persistencia entity y otro 00:02:40
de transacción, ¿de acuerdo? 00:02:42
Entonces 00:02:44
este de transacción y nos da 00:02:45
problemas, voy a borrar 00:02:49
otra vez, y tenemos 00:02:53
el otro commit que es el 00:02:59
de persistencia, que es el que nosotros queremos 00:03:01
ya vemos que no da ningún problema 00:03:03
¿vale? Bueno 00:03:05
¿qué es lo que quiero hacer yo aquí 00:03:07
en medio? Todo esto ha sido para preparar 00:03:09
para que trabaje ya con Ivernet 00:03:11
¿qué es lo que yo quiero hacer? Pues bueno, lo primero 00:03:13
que yo quiero hacer es crear un departamento. Voy a crear un departamento D, que va a ser 00:03:15
un nuevo departamento, al cual le pongo sus características. Esto se me enfada, no debería 00:03:21
enfadarse, simplemente voy a importar el paquete de clases. Bueno, si yo no recuerdo más el 00:03:33
departamento que lo tengo aquí, tengo dos constructores, uno al que le paso el nombre 00:03:41
y otro que le puedo poner los setes correspondientes. 00:03:45
Así que voy a poner directamente un nombre aquí. 00:03:49
Voy a poner un nombre que sea el departamento de finanzas. 00:03:52
Ahora, una vez que yo tengo este departamento, 00:03:59
yo lo que quiero es salvar la sesión con ese departamento. 00:04:02
O sea, quiero guardar el departamento en la sesión. 00:04:07
Y Santa Pascua ya está. Con esto valdría. 00:04:11
Voy a comprobar primero en la base de datos que no exista. Que no exista ese departamento. Voy al departamento y está en el momento vacío. No hay ninguno. Con lo cual, podría intentar ejecutar este programa. 00:04:15
hay muchas posibilidades de que haya errores 00:04:34
¿de acuerdo? ahora veremos por qué puede haber 00:04:37
errores 00:04:39
ejecuto 00:04:39
todos estos rojos no son errores, todos estos primeros 00:04:42
no son errores 00:04:45
voy a ampliar la consola 00:04:46
para que la vean 00:04:49
entonces, bueno, pues echamos un augeado 00:04:50
y efectivamente no hay ningún error 00:04:53
todos estos son avisos del propio 00:04:55
Avernight, después en otro 00:04:57
vídeo les contaré cómo quitar esto 00:04:59
Y no ha dado ningún error, simplemente ha debido de generar nuestro departamento. 00:05:02
Voy a comprobarlo, me vuelvo aquí y voy a volver a examinar nuestro proyecto. 00:05:10
Y no nos ha creado más que este que aparece finanzas, ¿de acuerdo? 00:05:22
en la tabla de departamento, examinar, y efectivamente nos ha generado un identificador 1 y nombre finanzas, justo el que nosotros habíamos intentado. 00:05:27
Si yo volviera a ejecutar el programa, algo que les recomiendo que hagan siempre para que se comprueben las cosas, ahora sí que han aparecido muchos errores. 00:05:39
Entonces, a partir de aquí, que fueron las informaciones que había, hay que empezar a ver los errores. 00:05:57
Y lo que nos dice es algo muy simple. Dice que la entrada a finanzas está duplicada porque hay una clave única en ese campo. Y efectivamente ese es el problema que da. Con lo cual, simplemente ya sabemos que lo que tenemos que hacer es ir buscando nuestras excepciones e irlas tratando. 00:06:02
Nosotros sabemos que esto nos ha generado una excepción. 00:06:26
Podemos tratarla. Vamos a tratarla. 00:06:29
Con lo cual me voy a ir a la consola. 00:06:31
Voy a buscar cómo se llamaba esta excepción, que es esta de aquí. 00:06:33
Con lo cual voy a copiarla para que no se me olvide su nombre. 00:06:40
Control-C. 00:06:43
Y, perdón, me vengo aquí al código y voy a tratar la excepción. 00:06:44
Entonces yo podría utilizar un bloque try. 00:06:53
Y aquí ver de esta excepción que aparece genérica, poner esta de aquí, ¿vale? El save que tengo aquí lo meto al try para que lo intente hacer. Voy a cargar, a importar las excepciones de hibernate y aquí puedo poner perfectamente pues algo así como clave duplicada, algo así, ¿vale? 00:06:59
Bueno, voy a ejecutar esto de aquí. 00:07:31
Voy a ejecutar esto de aquí, voy a guardarlo y voy a ejecutarlo. 00:07:36
Bueno, voy a ver mientras la consola completa para ver los errores. 00:07:44
Y vemos que me encuentro otros errores distintos, que no han sido tratados en esa excepción. 00:07:47
Y veo que tienen que ver con las transacciones, ¿de acuerdo? Con las transacciones. 00:07:54
Así que vamos a intentar hacer lo que realmente significa una transacción. 00:07:58
Yo voy a intentar hacer la transacción y si no puedo, voy a hacer un commit, lo que voy a hacer es un rollback. Si uno va al API de Hibernate, por lo que ve es una estructura como esta, donde intenta meter el bloque aquí dentro y si no lo deshace. 00:08:03
¿De acuerdo? Pues vamos a intentar hacer este bloque de aquí. 00:08:25
Vamos a meter la transacción de esta manera. 00:08:29
Voy a generar aquí un bloque try, catch, 00:08:32
o un try, catch, finally. 00:08:44
Ahí, bueno, vale. 00:08:47
Lo mismo me da. 00:08:50
Dentro de ese try, lo primero que vamos a hacer es cargar 00:08:51
la transacción 00:08:55
tengo el virus del dedo 00:08:58
vale, bueno 00:09:01
ahí estamos, esto lo defino 00:09:04
aquí, quitando todo esto 00:09:06
dentro 00:09:08
de esa transacción es donde voy a intentar 00:09:11
cargar 00:09:14
esto de aquí 00:09:16
¿de acuerdo? 00:09:17
y siguiendo este esquema 00:09:20
voy a coger una excepción 00:09:22
cualquiera que se nos quede por aquí 00:09:24
voy a intentar 00:09:26
Pon esto por aquí 00:09:30
En vez de esto que tengo aquí 00:09:33
Vamos a colocar las cosas 00:09:37
Como hay que colocarlas 00:09:41
Aquí tengo mi catch 00:09:45
Las transacciones en este ejemplo las ponía con un nombre 00:09:47
Con el nombre tx, pero yo tengo el nombre t 00:09:52
Si es distinto de nulo 00:09:58
pues voy a hacer un rollback 00:10:00
y voy 00:10:04
a lanzar esa excepción hacia el exterior para que alguien la recoja 00:10:06
y finalmente, si todo ha ido bien 00:10:12
pues voy a coger mi sesión y la voy a cerrar 00:10:15
¿de acuerdo? esto que estoy haciendo aquí 00:10:19
el tcomit lo haría aquí dentro 00:10:22
y en el esquema que él me utiliza 00:10:27
esto estaría aquí 00:10:34
¿de acuerdo? 00:10:40
veo aquí un par de problemas 00:10:47
que voy a ver de qué son 00:10:49
esta variable no ha sido inicializada 00:10:51
entonces voy a inicializar transaction anul 00:10:53
para que ya todo esté funcionando 00:10:56
el esquema es el mismo de antes 00:11:02
aquí tengo el bloque de salvar 00:11:04
que me diga si la clave es duplicada o no 00:11:05
o me debería decir algo así 00:11:08
pero lo más importante es si hago el commit o no lo hago 00:11:09
vamos a ver si esto me dice algo 00:11:12
ejecuto 00:11:14
y voy a ir a la consola 00:11:16
y yo sinceramente 00:11:17
veo que el problema que me da 00:11:22
me sigue dando el mismo 00:11:24
me ha dicho clave duplicada 00:11:26
el mensaje que yo puse 00:11:29
está ahí, hasta ahí está perfecto 00:11:30
y a partir de ahí 00:11:32
este error me está dando 00:11:34
el mismo 00:11:36
me dice aquí que en excepción 00:11:37
en el bloque que es este de Assertion Failure 00:11:40
que dice que no puede 00:11:42
guardar, que no puede realizar 00:11:48
esta sesión, de acuerdo 00:11:50
yo he seguido este esquema al pie de la letra 00:11:53
y realmente no veo 00:11:56
por donde van los tiros 00:12:00
los tiros los he visto en el momento que 00:12:03
lo he mirado rápidamente, aquí estoy lanzando 00:12:07
la excepción, con lo cual otra vez se me muestra 00:12:10
si yo simplemente quito esta línea 00:12:12
o simplemente voy a comentarla 00:12:14
para que no se ejecute 00:12:16
pues directamente 00:12:17
vemos que en la consola 00:12:20
me aparecen estos errores 00:12:22
para indicar cosas de Ibernate 00:12:25
propias de Ibernate, pero ya 00:12:26
no se me para el programa, el programa 00:12:28
seguiría ejecutando, de acuerdo 00:12:30
me cuenta las cuestiones, pero no 00:12:32
me cuenta nada más, así que 00:12:34
vuelvo al código 00:12:36
este sería nuestro esquema de trabajo 00:12:38
en un bloque try arrancamos nuestra transacción 00:12:41
ponemos lo que tengamos que hacer con nuestra aplicación 00:12:44
e intentamos que lo haga, que realmente lo ejecute 00:12:50
si hay algún problema hacemos un rollback 00:12:54
y finalmente, siempre en todo caso, cerramos nuestra sesión 00:12:57
espero que todo este vídeo les haya servido 00:13:01
para entender cómo funciona una parte de Ivernate. 00:13:05
Quiero volver a la parte teórica porque nos hemos perdido en tantos detalles de implementación 00:13:09
que no vemos la parte teórica. 00:13:15
En este momento nosotros estamos guardando un departamento sin decir nada de insert, into, 00:13:18
es decir, sin utilizar SQL para nada. 00:13:26
Directamente es la máquina ORM la que carga un objeto y la convierte a la base de datos 00:13:28
En este caso relacional, la base de datos relacional, guardándola sin hacer nosotros ninguna sentencia SQL 00:13:37
Esto nos va a garantizar hacer ese mapeo objeto relacional 00:13:43
Convertir un objeto en relaciones y viceversa 00:13:48
En otros ejemplos veremos ahora cómo obtener las relaciones de las tablas y convertirlas a objetos 00:13:51
CC por Antarctica Films Argentina 00:13:58
Idioma/s:
es
Autor/es:
Amadeo Mora
Subido por:
Amadeo M.
Licencia:
Dominio público
Visualizaciones:
124
Fecha:
31 de marzo de 2021 - 8:58
Visibilidad:
Público
Centro:
IES CLARA DEL REY
Duración:
13′ 59″
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:
28.33 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid