1 00:00:00,000 --> 00:00:08,080 Porque tenía un día de libre disposición 2 00:00:08,080 --> 00:00:09,300 de los dos que tenemos al año 3 00:00:09,300 --> 00:00:11,460 y dispuse no venir. 4 00:00:15,000 --> 00:00:17,440 Y me perdí ese día de vacaciones 5 00:00:17,440 --> 00:00:19,120 de libre disposición para estar todo el día 6 00:00:19,120 --> 00:00:20,179 con un fontanero en casa. 7 00:00:20,280 --> 00:00:21,100 ¿Lo has visto? ¡Qué divertido! 8 00:00:24,160 --> 00:00:26,899 Tú lo hacía un niño 9 00:00:26,899 --> 00:00:28,839 y nosotros decíamos que también lo hemos visto. 10 00:00:30,000 --> 00:00:31,480 Pues lo podía haber pensado, sí. 11 00:00:32,539 --> 00:00:33,380 Vale, a ver. 12 00:00:35,439 --> 00:00:37,219 Vamos a terminar con departamento. 13 00:00:38,679 --> 00:00:42,299 Venga, pues es una entidad, está claro. 14 00:00:44,240 --> 00:00:45,500 Las propiedades. 15 00:00:46,380 --> 00:00:50,399 Las anotamos o todas aquí o todas en los getters. 16 00:00:50,460 --> 00:00:51,939 Lo que no hacemos es mezclar, como en JaxB. 17 00:00:52,799 --> 00:00:55,960 Si nos gusta más ahí, porque se ve mejor ahí. 18 00:00:55,960 --> 00:00:57,200 Y yo, como ya he empezado con el get, 19 00:00:57,200 --> 00:00:58,479 ya me da ahora ansiedad 20 00:00:58,479 --> 00:01:00,320 por una clase una y otra otra 21 00:01:00,320 --> 00:01:01,960 vale, el ID 22 00:01:01,960 --> 00:01:05,060 era también autoincremento en departamento 23 00:01:05,060 --> 00:01:07,019 así que vamos a copiar esto mismo 24 00:01:07,019 --> 00:01:07,959 aquí 25 00:01:07,959 --> 00:01:14,109 esto mismo 26 00:01:14,109 --> 00:01:15,909 delante del ID 27 00:01:15,909 --> 00:01:20,719 ahora, el nombre 28 00:01:20,719 --> 00:01:22,579 como se llama nombre lo dejo 29 00:01:22,579 --> 00:01:24,780 y podríamos dejar 30 00:01:24,780 --> 00:01:25,640 esto así 31 00:01:25,640 --> 00:01:28,359 y esto 32 00:01:28,359 --> 00:01:29,560 y no pasa nada 33 00:01:29,560 --> 00:01:33,980 Pero, hombre, perdemos una posibilidad 34 00:01:33,980 --> 00:01:35,879 Que es, jolines 35 00:01:35,879 --> 00:01:37,840 Ya que tengo esa clave ajena 36 00:01:37,840 --> 00:01:40,519 A mí me encantaría, desde el departamento 37 00:01:40,519 --> 00:01:42,799 Acceder a todos los empleados 38 00:01:42,799 --> 00:01:44,680 Esa es la idea natural, ¿no? 39 00:01:44,719 --> 00:01:45,579 En la vida real 40 00:01:45,579 --> 00:01:47,739 Entonces 41 00:01:47,739 --> 00:01:50,980 Eso implicaría que en departamento 42 00:01:50,980 --> 00:01:52,180 Me vendría estupendo 43 00:01:52,180 --> 00:01:54,359 Tener esta propiedad 44 00:01:54,359 --> 00:01:58,370 ¿Listo? 45 00:02:02,629 --> 00:02:02,989 Ahí 46 00:02:02,989 --> 00:02:04,950 Listo 47 00:02:04,950 --> 00:02:14,199 Con su get y su set 48 00:02:14,199 --> 00:02:20,710 Añado el get y el set 49 00:02:20,710 --> 00:02:21,750 De esta de aquí 50 00:02:21,750 --> 00:02:31,780 Vale, no es que sea obligatorio 51 00:02:31,780 --> 00:02:33,599 Que yo ponga esta propiedad 52 00:02:33,599 --> 00:02:34,900 Pero es muy útil 53 00:02:34,900 --> 00:02:37,740 Porque entonces tengo la doble navegabilidad 54 00:02:37,740 --> 00:02:38,340 Que se llama 55 00:02:38,340 --> 00:02:39,580 Tengo la doble 56 00:02:39,580 --> 00:02:41,659 Que es, desde empleado 57 00:02:41,659 --> 00:02:44,719 Puedo llegar a su departamento 58 00:02:44,719 --> 00:02:45,620 Magnífico 59 00:02:45,620 --> 00:02:48,759 Y desde departamento 60 00:02:48,759 --> 00:02:50,659 Puedo llegar a sus empleados 61 00:02:50,659 --> 00:02:51,740 Estupendo 62 00:02:51,740 --> 00:03:10,900 Tengo la doble navegabilidad si la quiero, pero hombre, tendré que avisar que esta propiedad se rellena porque es el otro extremo de la otra relación. Si aquí tengo un many to one, es porque en el otro lado tengo un one to many. Esa es la doble navegabilidad. 63 00:03:10,900 --> 00:03:12,800 Pues entonces 64 00:03:12,800 --> 00:03:15,620 Me voy aquí a departamento 65 00:03:15,620 --> 00:03:17,219 Y digo, oye tú, cuidado 66 00:03:17,219 --> 00:03:19,460 Que este get empleados 67 00:03:19,460 --> 00:03:20,879 Viene 68 00:03:20,879 --> 00:03:24,400 Porque es el extremo 69 00:03:24,400 --> 00:03:25,860 De la otra many to one 70 00:03:25,860 --> 00:03:28,370 ¿Vale? 71 00:03:29,469 --> 00:03:31,009 Tengo que decir, oye 72 00:03:31,009 --> 00:03:32,650 Pero dentro de empleado 73 00:03:32,650 --> 00:03:33,770 ¿De qué otro extremo eres? 74 00:03:34,490 --> 00:03:36,389 Pues esto lo hacemos con 75 00:03:36,389 --> 00:03:41,199 Y aquí ponemos 76 00:03:41,199 --> 00:03:43,020 Dentro de la clase empleado 77 00:03:43,020 --> 00:03:45,039 Dentro de la clase empleado 78 00:03:45,039 --> 00:03:47,860 la propiedad que mapea 79 00:03:47,860 --> 00:03:49,719 tu otro extremo es 80 00:03:49,719 --> 00:03:51,120 esta 81 00:03:51,120 --> 00:03:52,379 departamento 82 00:03:52,379 --> 00:03:55,740 pues entonces mape by 83 00:03:55,740 --> 00:03:57,120 departamento 84 00:03:57,120 --> 00:04:07,129 ¿vale? 85 00:04:07,389 --> 00:04:09,370 entonces con esto hemos habilitado ya 86 00:04:09,370 --> 00:04:10,669 navegar por los dos lados 87 00:04:10,669 --> 00:04:13,490 desde empleado podemos entrar a los departamentos 88 00:04:13,490 --> 00:04:15,310 y desde departamento 89 00:04:15,310 --> 00:04:16,930 podemos entrar a la lista de empleados 90 00:04:16,930 --> 00:04:19,870 esta es, este es el extremo 91 00:04:19,870 --> 00:04:20,689 one to many 92 00:04:20,689 --> 00:04:40,850 ¿A cuál se corresponde para que Java sepa a qué clave ajena se corresponde para tirar de ella y rellenarlo todo y hacer su magia? Pues habrá que irse a la propiedad de departamento de empleado. Si nos vamos a la propiedad de departamento de empleado, vemos que efectivamente la propiedad de departamento de empleado está aquí caracterizada. 93 00:04:40,850 --> 00:04:46,350 entonces aquí 94 00:04:46,350 --> 00:04:48,529 sí que el lazy 95 00:04:48,529 --> 00:04:49,850 es 96 00:04:49,850 --> 00:04:57,230 pues sí, porque 97 00:04:57,230 --> 00:04:58,829 voy a bajarlo aquí abajo 98 00:04:58,829 --> 00:05:00,389 porque aquí 99 00:05:00,389 --> 00:05:03,269 sí que cada vez que yo trabajo 100 00:05:03,269 --> 00:05:05,189 con un departamento, cargar 101 00:05:05,189 --> 00:05:06,990 siempre todos los empleados 102 00:05:06,990 --> 00:05:08,329 esto sí que es un poco pesado 103 00:05:08,329 --> 00:05:10,569 claro 104 00:05:10,569 --> 00:05:14,810 de esta manera, cuando nosotros 105 00:05:14,810 --> 00:05:16,329 carguemos un departamento 106 00:05:16,329 --> 00:05:18,209 los empleados no se quedan cargados 107 00:05:18,209 --> 00:05:20,269 en memoria, que yo los pido 108 00:05:20,269 --> 00:05:22,029 entonces ya hibernate 109 00:05:22,029 --> 00:05:23,850 se va corriendo, uy, voy corriendo 110 00:05:23,850 --> 00:05:25,990 como nos ha pedido, y ahí a escondidas los cargo 111 00:05:25,990 --> 00:05:28,250 siempre y cuando la sesión esté abierta 112 00:05:28,250 --> 00:05:29,870 si no esté abierta, no, y nos da el 113 00:05:29,870 --> 00:05:31,829 leis inicializaciones excepción 114 00:05:31,829 --> 00:05:33,889 vale 115 00:05:33,889 --> 00:05:35,949 vamos a probar esto primero 116 00:05:35,949 --> 00:05:38,149 antes de añadir un par de propiedades más 117 00:05:38,149 --> 00:05:40,069 vamos a 118 00:05:40,069 --> 00:05:41,490 probar esto en nuestro main 119 00:05:41,490 --> 00:05:42,529 a ver 120 00:05:42,529 --> 00:05:45,709 yo creo que no nos falta ninguna notación 121 00:05:45,709 --> 00:05:48,730 No sé qué errores van a salir 122 00:05:48,730 --> 00:05:50,129 No son preparados 123 00:05:50,129 --> 00:05:51,810 Pero si nos salen, maravilloso 124 00:05:51,810 --> 00:05:53,089 Porque los arreglaremos 125 00:05:53,089 --> 00:05:55,410 Primero vamos a ver si el error 126 00:05:55,410 --> 00:05:57,889 Si el contexto de persistencia se crea bien 127 00:05:57,889 --> 00:05:59,930 Porque está todo bien configurado 128 00:05:59,930 --> 00:06:05,079 Perfecto 129 00:06:05,079 --> 00:06:10,620 Todo info y error 130 00:06:10,620 --> 00:06:12,040 Ha hecho la conexión 131 00:06:12,040 --> 00:06:12,519 ¿Veis? 132 00:06:13,060 --> 00:06:14,939 Él automáticamente se hace un pull 133 00:06:14,939 --> 00:06:17,579 No trabaja con conexiones JDBC 134 00:06:17,579 --> 00:06:18,360 ¿Veis? 135 00:06:18,360 --> 00:06:20,399 trabaja con JDBC desde el principio 136 00:06:20,399 --> 00:06:22,620 se hace su conexión 137 00:06:22,620 --> 00:06:23,699 con JDBC 138 00:06:23,699 --> 00:06:25,399 usa un pool 139 00:06:25,399 --> 00:06:28,839 y pipipi, lo hace todo y estupendo 140 00:06:28,839 --> 00:06:30,500 me dice que no hace 141 00:06:30,500 --> 00:06:32,199 falta que especifique el dialecto 142 00:06:32,199 --> 00:06:34,000 pues bueno, podría quitar esa propiedad de ahí 143 00:06:34,000 --> 00:06:36,379 no le he configurado gestión 144 00:06:36,379 --> 00:06:38,300 de transacciones complejas 145 00:06:38,300 --> 00:06:40,579 JTA que mencionábamos el otro día 146 00:06:40,579 --> 00:06:42,360 las transacciones pueden ser 147 00:06:42,360 --> 00:06:44,300 las que yo hago con JDBC simples 148 00:06:44,300 --> 00:06:46,500 o una gestión 149 00:06:46,500 --> 00:06:48,500 compleja porque tengo diferentes bases 150 00:06:48,500 --> 00:06:50,519 de datos de cursos. No he metido eso. 151 00:06:50,639 --> 00:06:51,579 No he metido JTA. 152 00:06:52,839 --> 00:06:53,160 ¿Ya está? 153 00:06:55,160 --> 00:07:02,040 Pues a arreglarlo 154 00:07:02,040 --> 00:07:02,279 todo. 155 00:07:06,839 --> 00:07:07,959 No, parece eso. 156 00:07:09,060 --> 00:07:10,480 ¿Os da errores? ¿A quién no le 157 00:07:10,480 --> 00:07:12,379 da error? O sea, 158 00:07:12,420 --> 00:07:13,060 ¿le da lo que a mí? 159 00:07:15,060 --> 00:07:15,300 No. 160 00:07:16,800 --> 00:07:18,600 ¿A todo el mundo le sale error, error, 161 00:07:18,600 --> 00:07:18,860 error? 162 00:07:18,860 --> 00:07:22,579 Así te sale, o sea, como a mí 163 00:07:22,579 --> 00:07:24,560 Bueno, pues nos has levantado la mano 164 00:07:24,560 --> 00:07:27,579 Sí 165 00:07:27,579 --> 00:07:37,269 Habéis importado todo de 166 00:07:37,269 --> 00:07:38,209 Jakarta, ¿verdad? 167 00:07:39,129 --> 00:07:41,529 Habéis puesto aquí el nombrecito correcto 168 00:07:41,529 --> 00:07:43,250 Pero a ver, el error os dirá por qué 169 00:07:43,250 --> 00:07:51,189 Os dará una explicación de por qué os da errores 170 00:07:51,189 --> 00:07:54,750 ¿Has puesto bien el nombre? 171 00:07:55,029 --> 00:07:55,930 ¿Lo has puesto en meta ahí? 172 00:07:58,329 --> 00:07:59,569 Transitorio, no tiene nada que ver 173 00:07:59,569 --> 00:08:01,410 con el contexto de persistencia 174 00:08:01,410 --> 00:08:03,110 porque no lo hemos hecho persistente 175 00:08:03,110 --> 00:08:05,149 que esté aquí metido dentro 176 00:08:05,149 --> 00:08:06,470 no significa que sea persistente 177 00:08:06,470 --> 00:08:08,029 hay que hacerlo persistente 178 00:08:08,029 --> 00:08:11,569 ¿Cómo conseguimos que un objeto sea persistente? 179 00:08:13,910 --> 00:08:15,629 Pues si nosotros hacemos esto 180 00:08:15,629 --> 00:08:16,490 tranquilamente 181 00:08:16,490 --> 00:08:23,269 ya está, a partir de aquí 182 00:08:23,269 --> 00:08:25,790 el objeto ya es persistente 183 00:08:25,790 --> 00:08:29,449 de hecho si hacemos esto, veremos como 184 00:08:29,449 --> 00:08:31,430 me aparece en la base de datos, pero 185 00:08:31,430 --> 00:08:32,470 si yo no hago esto 186 00:08:32,470 --> 00:08:35,450 el objeto no aparece en la base de datos 187 00:08:35,450 --> 00:08:39,549 no le he puesto la propiedad 188 00:08:39,549 --> 00:08:40,950 id porque es autogenerada 189 00:08:40,950 --> 00:08:43,389 si no fuera autogenerada 190 00:08:43,389 --> 00:08:45,429 si yo aquí no tuviera el generated value 191 00:08:45,429 --> 00:08:47,409 el jpa me diría, me falta 192 00:08:47,409 --> 00:08:49,049 un dato, etcétera 193 00:08:49,049 --> 00:08:51,389 vale, entonces si yo 194 00:08:51,389 --> 00:08:52,370 ejecuto esto 195 00:08:52,370 --> 00:09:06,279 ¿Por qué no me sale el SQL 196 00:09:06,279 --> 00:09:07,860 Si le he puesto que me lo muestre? 197 00:09:09,940 --> 00:09:10,600 Qué pena 198 00:09:10,600 --> 00:09:13,820 Debería salirme 199 00:09:13,820 --> 00:09:15,259 Pero bueno, en la base de datos me va a salir 200 00:09:15,259 --> 00:09:17,919 Departamento 201 00:09:17,919 --> 00:09:23,110 Ah, perdón 202 00:09:23,110 --> 00:09:25,230 Que me he metido en transacción, vale, con razón no me lo ha hecho 203 00:09:25,230 --> 00:09:26,549 Perdón, perdón, perdón 204 00:09:26,549 --> 00:09:28,509 Vamos, me salto lo más importantísimo 205 00:09:28,509 --> 00:09:30,169 Por Dios, qué horror 206 00:09:30,169 --> 00:09:31,070 Vale 207 00:09:31,070 --> 00:09:34,610 tenemos que trabajar 208 00:09:34,610 --> 00:09:36,570 este es el contexto de persistencia 209 00:09:36,570 --> 00:09:38,549 pero cuando hacemos cosas que modifican 210 00:09:38,549 --> 00:09:40,669 la base de datos, tenemos que trabajar 211 00:09:40,669 --> 00:09:42,230 dentro de una transacción 212 00:09:42,230 --> 00:09:44,909 luego hay otras cosas que las gestionan en transacciones 213 00:09:44,909 --> 00:09:45,909 esa ya es otra movida 214 00:09:45,909 --> 00:09:48,269 pero ¿cómo las gestionamos? 215 00:09:49,029 --> 00:09:50,590 para que hagan exactamente lo que queremos decir 216 00:09:50,590 --> 00:09:51,830 pero hay que trabajar en una transacción 217 00:09:51,830 --> 00:09:53,330 si no la base de datos no se entera 218 00:09:53,330 --> 00:09:56,669 ¿es obligatorio trabajar siempre en el contexto 219 00:09:56,669 --> 00:09:57,590 de una transacción? 220 00:09:57,590 --> 00:10:02,470 cuando hacemos solamente consultas 221 00:10:02,470 --> 00:10:03,389 no lo es 222 00:10:03,389 --> 00:10:05,809 ¿vale? no hace falta 223 00:10:05,809 --> 00:10:07,350 pero siempre es recomendable 224 00:10:07,350 --> 00:10:09,169 trabajar en el contexto de una transacción 225 00:10:09,169 --> 00:10:11,110 ¿vale? entonces 226 00:10:11,110 --> 00:10:14,330 si modificamos hay que meterlo 227 00:10:14,330 --> 00:10:16,169 en transacción, aunque aquí es una tontería 228 00:10:16,169 --> 00:10:17,950 porque solamente hacemos una sentencia 229 00:10:17,950 --> 00:10:20,370 entonces la transacción es cuando hacemos muchas cosas 230 00:10:20,370 --> 00:10:22,169 y queremos o que se hagan 231 00:10:22,169 --> 00:10:23,269 todas a la vez o ninguna 232 00:10:23,269 --> 00:10:25,929 aquí es una tontería, solo hacemos una 233 00:10:25,929 --> 00:10:27,149 Pero aún así 234 00:10:27,149 --> 00:10:28,990 Tenemos que meterlo en una transacción 235 00:10:28,990 --> 00:10:31,289 Vale, entonces 236 00:10:31,289 --> 00:10:32,830 ¿Cómo se hace una transacción? 237 00:10:41,840 --> 00:10:42,399 Create 238 00:10:42,399 --> 00:10:44,059 Creo que era, si no lo miro 239 00:10:44,059 --> 00:10:45,480 No 240 00:10:45,480 --> 00:10:48,379 Get transaction 241 00:10:48,379 --> 00:10:50,960 Begin 242 00:10:50,960 --> 00:10:52,639 Vale 243 00:10:52,639 --> 00:10:55,320 Entonces con esto empezamos una transacción 244 00:10:55,320 --> 00:10:57,539 La transacción ya está empezada 245 00:10:57,539 --> 00:10:59,659 Y ahora ya 246 00:10:59,659 --> 00:11:03,139 En el momento en el que yo quiera 247 00:11:03,139 --> 00:11:04,139 Que las cosas 248 00:11:04,139 --> 00:11:06,580 Se actualicen en la base de datos 249 00:11:06,580 --> 00:11:08,919 Porque aquí yo podría haber hecho un montón de cosas 250 00:11:08,919 --> 00:11:11,419 Podría haber ahora empezado a hacer departamentos 251 00:11:11,419 --> 00:11:13,179 El departamento ahora me cambia 252 00:11:13,179 --> 00:11:14,860 Ahora cojo no sé cuántos, ahora cojo no sé qué 253 00:11:14,860 --> 00:11:16,940 Cuando quiero que eso realmente 254 00:11:16,940 --> 00:11:18,379 Se refleje en la base de datos 255 00:11:18,379 --> 00:11:19,940 Cuando me interesa que se refleje 256 00:11:19,940 --> 00:11:22,059 Pues ahora me hago el 257 00:11:22,059 --> 00:11:23,919 El commit 258 00:11:23,919 --> 00:11:29,679 Vale, entonces ahora ya 259 00:11:29,679 --> 00:11:31,480 sí que voy a ver el 260 00:11:31,480 --> 00:11:33,460 log del SQL ahí, suponemos. 261 00:11:39,620 --> 00:11:41,120 ¿O por qué no me aparece el insert? 262 00:11:41,919 --> 00:11:42,220 ¿Ahí? 263 00:11:46,539 --> 00:11:47,659 Vale, pero ¿por qué no hay 264 00:11:47,659 --> 00:11:56,210 insert? Ahí estamos. 265 00:11:58,559 --> 00:11:59,440 Sería más cómodo que 266 00:11:59,440 --> 00:12:01,779 el Berlin y el Comic funcionasen como 267 00:12:01,779 --> 00:12:02,340 un bloque, ¿no? 268 00:12:03,200 --> 00:12:04,080 ¿Cómo como un bloque? 269 00:12:08,100 --> 00:12:09,019 ¿Más cómodo? 270 00:12:09,899 --> 00:12:11,440 No, me parece, es hacer un bloque 271 00:12:11,440 --> 00:12:13,440 todo lo que sea NIDAR y 272 00:12:13,440 --> 00:12:15,799 hace a mí, no me sería más cómodo. 273 00:12:17,580 --> 00:12:18,879 Bueno, pues 274 00:12:18,879 --> 00:12:23,700 ¿qué quería 275 00:12:23,700 --> 00:12:25,399 yo hacer aquí? 276 00:12:25,500 --> 00:12:26,559 Venga, pues vamos a hacer 277 00:12:26,559 --> 00:12:28,799 vamos a ahora 278 00:12:28,799 --> 00:12:31,600 coger un empleado, por ejemplo 279 00:12:31,600 --> 00:12:33,500 ¿tenemos algún empleado hecho? 280 00:12:33,740 --> 00:12:35,419 Sí. Tenemos a 281 00:12:35,419 --> 00:12:37,700 este que estaba en el departamento 282 00:12:37,700 --> 00:12:38,159 1. 283 00:12:42,470 --> 00:12:44,090 Vale, tranquilos. 284 00:12:44,750 --> 00:12:49,389 No tenéis ningún empleado 285 00:12:49,389 --> 00:12:52,190 Pues a ver, meteos uno aquí 286 00:12:52,190 --> 00:12:53,909 Uno, porque lo quiero sacar, no lo quiero meter 287 00:12:53,909 --> 00:12:54,610 Yo, meteos uno 288 00:12:54,610 --> 00:12:57,110 Que esté en cualquier departamento 289 00:12:57,110 --> 00:12:58,830 ¿No tenéis ningún departamento tampoco? 290 00:12:59,929 --> 00:13:00,370 Vale 291 00:13:00,370 --> 00:13:02,990 Pues 292 00:13:02,990 --> 00:13:08,230 Venga, creaos un par de 293 00:13:08,230 --> 00:13:10,370 Yo que sé, un par de datos de prueba 294 00:13:10,370 --> 00:13:12,350 Añadid otro departamento más 295 00:13:12,350 --> 00:13:13,230 El que os dé la gana 296 00:13:13,230 --> 00:13:18,509 y un par de empleados. 297 00:13:20,190 --> 00:13:21,610 Añadid unos datos cualquiera. 298 00:13:35,039 --> 00:13:36,639 Bueno, pues este objeto es persistente, 299 00:13:36,860 --> 00:13:39,940 pero los objetos pueden ser persistentes 300 00:13:39,940 --> 00:13:42,320 no solo porque yo los he creado 301 00:13:42,320 --> 00:13:44,320 y los he insertado en la base de datos, 302 00:13:44,860 --> 00:13:47,419 sino porque los estoy recuperando de la base de datos. 303 00:13:47,980 --> 00:13:50,039 Por ejemplo, vamos a recuperar un empleado 304 00:13:50,039 --> 00:13:57,399 de la base de datos 305 00:13:57,399 --> 00:14:01,259 ¿Cómo recuperamos un empleado de la base de datos? 306 00:14:02,320 --> 00:14:04,159 Pues lo recuperamos con find 307 00:14:04,159 --> 00:14:08,840 Recuperar por clave primaria 308 00:14:08,840 --> 00:14:10,120 ¿Vale? Es lo que voy a hacer aquí 309 00:14:10,120 --> 00:14:18,269 Recuperar por clave 310 00:14:18,269 --> 00:14:21,149 Entonces, pues por ejemplo 311 00:14:21,149 --> 00:14:23,129 Voy a recuperar el primero que tengo 312 00:14:23,129 --> 00:14:26,190 ¿Y aquí qué se pone? 313 00:14:26,649 --> 00:14:27,389 Aquí se pone 314 00:14:27,389 --> 00:14:30,090 El objeto clase 315 00:14:30,090 --> 00:14:33,110 El objeto clase en el que va a caer ese empleado 316 00:14:33,110 --> 00:14:36,009 ¿qué es esto? 317 00:14:45,559 --> 00:14:47,360 entonces, ahora ya tengo dos 318 00:14:47,360 --> 00:14:48,820 objetos persistentes 319 00:14:48,820 --> 00:14:51,379 conectados a la base de datos 320 00:14:51,379 --> 00:14:53,100 el departamento que además 321 00:14:53,100 --> 00:14:54,600 he insertado porque no estaba 322 00:14:54,600 --> 00:14:57,740 y este empleado que lo he recogido a la base de datos 323 00:14:57,740 --> 00:14:59,519 me he limitado a recogerlo 324 00:14:59,519 --> 00:15:00,759 entonces los dos son persistentes 325 00:15:00,759 --> 00:15:03,379 ahora yo ya a partir de aquí 326 00:15:03,379 --> 00:15:05,379 me olvido de la base de datos 327 00:15:05,379 --> 00:15:06,860 y hago con ellos lo que quiera 328 00:15:06,860 --> 00:15:09,399 y cuando haga el commit 329 00:15:09,399 --> 00:15:11,340 todo se reflejará, por ejemplo 330 00:15:11,340 --> 00:15:13,419 mi empleado en este caso 331 00:15:13,419 --> 00:15:15,059 que estaba en el departamento 332 00:15:15,059 --> 00:15:16,539 vamos a ponerlo aquí 333 00:15:16,539 --> 00:15:20,460 el 334 00:15:20,460 --> 00:15:23,299 empleado está 335 00:15:23,299 --> 00:15:26,960 en 336 00:15:26,960 --> 00:15:29,279 vamos a poner el departamento en el que está 337 00:15:29,279 --> 00:15:31,500 empleado.get 338 00:15:31,500 --> 00:15:32,559 departamento 339 00:15:32,559 --> 00:15:35,539 .get 340 00:15:35,539 --> 00:15:36,059 nombre 341 00:15:36,059 --> 00:15:39,360 entonces esto es mucho más cómodo 342 00:15:39,360 --> 00:15:41,460 que jdbc porque yo recupero 343 00:15:41,460 --> 00:15:43,519 el empleado y tengo todos los datos 344 00:15:43,519 --> 00:15:45,159 del empleado colgando a través de él 345 00:15:45,159 --> 00:15:46,679 del departamento, del nombre 346 00:15:46,679 --> 00:15:48,340 ahí lo tengo todo 347 00:15:48,340 --> 00:15:49,460 ¿vale? 348 00:15:50,580 --> 00:15:52,539 ¿qué? vale 349 00:15:52,539 --> 00:15:55,320 a ver, que voy a bajar esto aquí 350 00:15:55,320 --> 00:15:57,320 ¿vale? 351 00:15:57,700 --> 00:15:59,500 entonces es mucho más cómodo que JDBC 352 00:15:59,500 --> 00:16:00,240 lógicamente 353 00:16:00,240 --> 00:16:03,519 aquí, aunque yo 354 00:16:03,519 --> 00:16:05,600 no lo vea, Ibernati ha ido en dos 355 00:16:05,600 --> 00:16:07,460 saltos, aquí ha recuperado 356 00:16:07,460 --> 00:16:08,059 el empleado 357 00:16:08,059 --> 00:16:11,179 y luego yo, como le he pedido el departamento 358 00:16:11,179 --> 00:16:13,639 él dice, ostras, que lo que quiere es el departamento 359 00:16:13,639 --> 00:16:15,299 pues se ha ido corriendo a hacer el select 360 00:16:15,299 --> 00:16:17,200 del departamento, pues aquí ha hecho 361 00:16:17,200 --> 00:16:19,360 un primer select, solo con los datos del empleado 362 00:16:19,360 --> 00:16:21,539 sin el departamento que le cuelga 363 00:16:21,539 --> 00:16:23,419 y aquí ha hecho un segundo select 364 00:16:23,419 --> 00:16:25,179 porque se lo he pedido específicamente 365 00:16:25,179 --> 00:16:26,879 y eso es así 366 00:16:26,879 --> 00:16:29,519 porque esto está como lazy 367 00:16:29,519 --> 00:16:31,179 si estuviera como 368 00:16:31,179 --> 00:16:31,779 eager 369 00:16:31,779 --> 00:16:35,220 aquí el select 370 00:16:35,220 --> 00:16:37,220 que haría, sería un select join 371 00:16:37,220 --> 00:16:39,539 entonces podéis probar 372 00:16:39,539 --> 00:16:41,480 a ejecutar primero esto con lazy 373 00:16:41,480 --> 00:16:43,600 y veréis en el show SQL que hay dos select 374 00:16:43,600 --> 00:16:45,659 y sin embargo si lo ejecutáis 375 00:16:45,659 --> 00:16:47,779 con eager veréis que hay un único select con el join 376 00:16:47,779 --> 00:16:49,539 entonces se hace 377 00:16:49,539 --> 00:16:50,960 más pesado con el eager 378 00:16:50,960 --> 00:16:53,039 porque desde el principio 379 00:16:53,039 --> 00:16:55,019 lo tiene todo 380 00:16:55,019 --> 00:16:57,019 entonces puede que no lo necesitemos 381 00:16:57,019 --> 00:16:59,159 y estamos cargando todo, haciendo los join 382 00:16:59,159 --> 00:17:01,279 haciendo todo el rollo para luego no pedirlo 383 00:17:01,279 --> 00:17:03,899 aquí en este caso si lo hemos pedido, pero podría ocurrir que no 384 00:17:03,899 --> 00:17:05,079 con el eager ya 385 00:17:05,079 --> 00:17:07,619 con el eager ya carga 386 00:17:07,619 --> 00:17:09,480 todo lo que tenga colgando 387 00:17:09,480 --> 00:17:14,000 Entonces 388 00:17:14,000 --> 00:17:22,259 ¿Veis? Me ha hecho dos SELs diferentes 389 00:17:22,259 --> 00:17:23,839 El primer SEL es sencillito 390 00:17:23,839 --> 00:17:25,799 No se ha complicado la vida 391 00:17:25,799 --> 00:17:28,579 Y luego ya me ha hecho el resto de SEL 392 00:17:28,579 --> 00:17:30,099 Del empleado está en informática 393 00:17:30,099 --> 00:17:30,700 Vale 394 00:17:30,700 --> 00:17:35,480 Aquí 395 00:17:35,480 --> 00:17:38,559 ¿Qué ocurriría? 396 00:17:39,039 --> 00:17:40,480 Imaginaos que aquí como tengo yo 397 00:17:40,480 --> 00:17:41,160 Un único main 398 00:17:41,160 --> 00:17:44,559 Pues lógicamente no tendría sentido 399 00:17:44,559 --> 00:17:49,170 aquí, pero si yo 400 00:17:49,170 --> 00:17:54,720 imaginaos 401 00:17:54,720 --> 00:17:56,079 que hago esto aquí 402 00:17:56,079 --> 00:17:58,160 control 403 00:17:58,160 --> 00:18:00,539 esto 404 00:18:00,539 --> 00:18:01,779 en lugar de ponerlo aquí 405 00:18:01,779 --> 00:18:07,299 lo pusiera 406 00:18:07,299 --> 00:18:09,619 lo pongo 407 00:18:10,160 --> 00:18:11,619 aquí 408 00:18:12,480 --> 00:18:15,339 vale 409 00:18:15,339 --> 00:18:16,640 entonces 410 00:18:16,640 --> 00:18:22,450 vale, que esto aquí como estoy en un 411 00:18:22,450 --> 00:18:23,990 unicomain todo controlado, pues 412 00:18:23,990 --> 00:18:26,630 rápidamente veríamos que esto es un problema 413 00:18:26,630 --> 00:18:28,529 pero cuando tenemos mil capas 414 00:18:28,529 --> 00:18:30,710 de DAOs, implementaciones, servicios 415 00:18:30,710 --> 00:18:32,809 DTOs, cuando tengo un montón de capas 416 00:18:32,809 --> 00:18:34,289 esto ya no es una tontería 417 00:18:34,289 --> 00:18:35,529 que ocurra esta situación 418 00:18:35,529 --> 00:18:38,329 entonces yo aquí, lo que es 419 00:18:38,329 --> 00:18:40,230 importante por supuesto es que el 420 00:18:40,230 --> 00:18:42,289 commit y el close lo haya 421 00:18:42,289 --> 00:18:44,430 hecho aquí después, después de 422 00:18:44,430 --> 00:18:46,630 persistir este objeto y después de recuperar 423 00:18:46,630 --> 00:18:48,329 el otro, pero 424 00:18:48,329 --> 00:18:50,329 luego yo puedo estar tan tranquila 425 00:18:50,329 --> 00:18:52,390 pensando que como ya ha recuperado el empleado 426 00:18:52,390 --> 00:18:54,329 ya el contexto 427 00:18:54,329 --> 00:18:56,150 de persistencia se ha cerrado porque 428 00:18:56,150 --> 00:18:58,289 no lo necesito más y yo tengo aquí 429 00:18:58,289 --> 00:19:00,329 mi empleado y siga haciendo cosas con él, que en este 430 00:19:00,329 --> 00:19:02,329 caso sería, me creo que lo tengo 431 00:19:02,329 --> 00:19:04,049 pero estoy en un DAO, lo recojo 432 00:19:04,049 --> 00:19:06,269 patatín y ejecuto esto 433 00:19:06,269 --> 00:19:08,150 y resulta que aquí me 434 00:19:08,150 --> 00:19:15,440 debería salir este 435 00:19:15,440 --> 00:19:16,599 error 436 00:19:16,599 --> 00:19:19,609 ¿vale? 437 00:19:25,059 --> 00:19:26,359 entonces, este error 438 00:19:26,359 --> 00:19:27,460 significa, uy 439 00:19:27,460 --> 00:19:30,839 estás intentando acceder a una propiedad 440 00:19:30,839 --> 00:19:32,420 que yo no te he 441 00:19:32,420 --> 00:19:34,559 rellenado cuando recogiste el objeto 442 00:19:34,559 --> 00:19:36,039 porque me pusiste en modo vago 443 00:19:36,039 --> 00:19:37,720 entonces yo 444 00:19:37,720 --> 00:19:40,259 si yo no tengo ningún problema, yo me voy a select 445 00:19:40,259 --> 00:19:42,539 y te lo hago ahora mismo, pero me acabas 446 00:19:42,539 --> 00:19:44,220 de cerrar el contexto de persistencia 447 00:19:44,220 --> 00:19:45,839 con lo cual lo siento, pero no te lo puedo hacer 448 00:19:45,839 --> 00:19:47,980 todo eso es lo que significa 449 00:19:47,980 --> 00:19:49,779 el lazy inicialización excepto este 450 00:19:49,779 --> 00:19:54,559 a ver, aquí si haría falta porque he puesto 451 00:19:54,559 --> 00:19:55,359 el persist antes 452 00:19:55,359 --> 00:20:02,160 no, podría haber hecho el commit aquí 453 00:20:02,160 --> 00:20:04,240 antes, a ver, me lo he puesto ahí porque 454 00:20:04,240 --> 00:20:06,220 comimos las dos juntas, pero además podría haber puesto el commit 455 00:20:06,220 --> 00:20:07,640 aquí, vale 456 00:20:07,640 --> 00:20:10,500 Vale, pues entonces 457 00:20:10,500 --> 00:20:20,690 Esto no nos interesa 458 00:20:20,690 --> 00:20:21,450 Que esté aquí 459 00:20:21,450 --> 00:20:23,609 Sino que nos interesa ahí 460 00:20:23,609 --> 00:20:25,950 Y aquí ponemos 461 00:20:25,950 --> 00:20:43,299 Alguien 462 00:20:43,299 --> 00:20:49,670 Action 463 00:20:49,670 --> 00:20:53,109 Exception 464 00:20:53,109 --> 00:20:58,099 Vale, pues a ver 465 00:20:58,099 --> 00:21:00,099 Más cosas interesantes 466 00:21:00,099 --> 00:21:01,940 Bueno, yo aquí ya en este punto 467 00:21:01,940 --> 00:21:03,960 En el que estamos aquí 468 00:21:03,960 --> 00:21:06,660 Estoy aquí 469 00:21:06,660 --> 00:21:09,079 Tengo mis objetos persistentes 470 00:21:09,079 --> 00:21:11,680 Estos, empleado que lo he recuperado 471 00:21:11,680 --> 00:21:13,000 Y departamento que lo he hecho 472 00:21:13,000 --> 00:21:14,720 Persistente, vale 473 00:21:14,720 --> 00:21:16,200 Aquí tengo los dos 474 00:21:16,200 --> 00:21:18,640 Y ahora puedo hacer un montón de cosas 475 00:21:18,640 --> 00:21:21,859 Por ejemplo 476 00:21:21,859 --> 00:21:24,619 ¿Puedo yo actualizar 477 00:21:24,619 --> 00:21:28,900 Desde el departamento 478 00:21:28,900 --> 00:21:30,220 ¿Puedo actualizar empleado? 479 00:21:31,140 --> 00:21:32,220 Pues sí que puedo 480 00:21:32,220 --> 00:21:34,640 A ver, sí o no 481 00:21:34,640 --> 00:21:35,839 Depende de una propiedad 482 00:21:35,839 --> 00:21:58,900 A ver, por ejemplo, tenemos nuestro departamento y vamos a todos los, vamos a hacer ahora un trocito de código que sea todos los empleados de un departamento añadirles a su nombre un guión bajo, por ejemplo, porque todos los empleados del departamento nos interesa que se llamen con su nombre guión bajo. 483 00:21:58,900 --> 00:22:01,720 Vale, pues por ejemplo 484 00:22:01,720 --> 00:22:03,299 Añadimos 485 00:22:03,299 --> 00:22:06,000 A todos los 486 00:22:06,000 --> 00:22:06,579 En 487 00:22:06,579 --> 00:22:12,519 Todos los pelaos de frío 488 00:22:12,519 --> 00:22:16,180 De 489 00:22:16,180 --> 00:22:18,200 Patamento 490 00:22:18,200 --> 00:22:22,759 Un guión bajo 491 00:22:22,759 --> 00:22:24,680 A su nombre 492 00:22:24,680 --> 00:22:27,700 Esto con jdbc 493 00:22:27,700 --> 00:22:30,039 Directamente es un rollo, tengo que hacer los sql 494 00:22:30,039 --> 00:22:32,180 Con esto es facilísimo 495 00:22:32,180 --> 00:22:33,900 Aquí sí que importa el teléfono 496 00:22:33,900 --> 00:22:35,680 Sí, sí, sí 497 00:22:35,680 --> 00:22:37,339 porque íbamos a actualizar la base de datos. 498 00:22:38,960 --> 00:22:42,700 Entonces, aquí, pues, a ver, 499 00:22:42,759 --> 00:22:45,900 ¿de qué departamento vamos a hacerlo? 500 00:22:46,039 --> 00:22:46,920 Pues, de uno cualquiera. 501 00:22:47,460 --> 00:22:50,880 De este, por ejemplo, que acabamos de hacer persistente de aquí. 502 00:22:50,880 --> 00:22:53,200 Lo que pasa es que este no tiene todavía ningún empleado. 503 00:22:53,900 --> 00:22:56,559 Pues, venga, este empleado que acabo de coger 504 00:22:56,559 --> 00:22:59,619 le voy a pasar a ese departamento antes de nada. 505 00:23:00,779 --> 00:23:01,000 ¿Vale? 506 00:23:01,220 --> 00:23:03,920 Entonces, el empleado que acabo de coger 507 00:23:03,920 --> 00:23:06,880 le voy a fijar como departamento 508 00:23:06,880 --> 00:23:08,160 el departamento que acabo de hacer 509 00:23:08,160 --> 00:23:10,819 entonces voy a 510 00:23:10,819 --> 00:23:11,880 poner esto antes 511 00:23:11,880 --> 00:23:13,980 lo voy a poner aquí 512 00:23:13,980 --> 00:23:22,279 le cambio el 513 00:23:22,279 --> 00:23:24,200 departamento 514 00:23:24,200 --> 00:23:25,720 vale 515 00:23:25,720 --> 00:23:29,579 entonces todo esto 516 00:23:29,579 --> 00:23:32,339 trabajo con objetos, estoy olvidada 517 00:23:32,339 --> 00:23:33,880 de la base de datos, que es la ventaja 518 00:23:33,880 --> 00:23:36,400 los objetos desde el momento en que ya están en el 519 00:23:36,400 --> 00:23:38,180 contexto y son persistentes, yo trabajo con ellos 520 00:23:38,180 --> 00:23:40,539 tranquilamente, yo he cambiado el departamento, no tengo que hacer 521 00:23:40,539 --> 00:23:42,200 ningún UBDATE, 522 00:23:42,519 --> 00:23:43,700 WEBWARE, no sé qué, 523 00:23:43,940 --> 00:23:45,200 SETVALUES, patatín, no. 524 00:23:45,880 --> 00:23:47,700 A este empleado, ¿quiere este departamento? 525 00:23:47,839 --> 00:23:49,619 Pues ya está, en ese departamento este. 526 00:23:50,299 --> 00:23:52,059 Tan ricamente. Ahora, siguiente cosa 527 00:23:52,059 --> 00:23:55,779 que hemos dicho. ¿Vale? Entonces, 528 00:23:55,859 --> 00:23:57,779 todos estos objetos, esto no significa 529 00:23:57,779 --> 00:24:00,000 que en la base de datos esto se haga automáticamente, 530 00:24:00,140 --> 00:24:01,980 no. Esto lo que significa 531 00:24:01,980 --> 00:24:03,859 es que Hibernate 532 00:24:03,859 --> 00:24:05,720 tiene su cajita de objetos 533 00:24:05,720 --> 00:24:07,440 manejados. 534 00:24:08,220 --> 00:24:10,019 Los MANAT, que se llama así, 535 00:24:10,099 --> 00:24:10,940 lo estudiáis en inglés. 536 00:24:10,940 --> 00:24:14,059 hibernate tiene su cajita de objetos manejados 537 00:24:14,059 --> 00:24:15,160 entre los cuales es em 538 00:24:15,160 --> 00:24:18,059 y departamento, los tiene ahí manejados 539 00:24:18,059 --> 00:24:19,720 entonces él va registrando 540 00:24:19,720 --> 00:24:21,500 todos los cambios que se les van haciendo 541 00:24:21,500 --> 00:24:23,380 y cuando toque 542 00:24:23,380 --> 00:24:25,660 porque hagamos un commit o porque 543 00:24:25,660 --> 00:24:27,779 hagamos un flush, que también se 544 00:24:27,779 --> 00:24:37,240 puede hacer, vale 545 00:24:37,240 --> 00:24:39,900 entonces sí que se sincroniza 546 00:24:39,900 --> 00:24:40,900 con la base de datos 547 00:24:40,900 --> 00:24:43,480 sincronizamos base 548 00:24:43,480 --> 00:24:45,240 de datos y 549 00:24:45,240 --> 00:24:47,079 contexto de 550 00:24:47,079 --> 00:24:49,299 Persistencia 551 00:24:49,299 --> 00:24:54,140 ¿Vale? Entonces, y Bernadette 552 00:24:54,140 --> 00:24:55,940 Tiene su objeto, nosotros trabajamos con ellos 553 00:24:55,940 --> 00:24:57,700 Y a respuestas de los fluses 554 00:24:57,700 --> 00:24:59,940 O de los commit, se sincroniza 555 00:24:59,940 --> 00:25:01,740 Él ya sabe cómo hacerlo, nosotros nos olvidamos 556 00:25:01,740 --> 00:25:04,359 Vale, entonces, ahora queda lo siguiente que vamos a hacer 557 00:25:04,359 --> 00:25:05,420 Actualizar 558 00:25:05,420 --> 00:25:07,359 Un objeto a través de otro 559 00:25:07,359 --> 00:25:12,000 Aquí es en, porque es el contexto de 560 00:25:12,000 --> 00:25:14,119 Persistencia, este es el empleado, vale, no está muy bien 561 00:25:14,119 --> 00:25:14,740 Elegido el nombre 562 00:25:14,740 --> 00:25:18,039 Vale, a ver, vamos a todos los departamentos 563 00:25:18,039 --> 00:25:20,619 Venga, pues por ejemplo a este 564 00:25:20,619 --> 00:25:22,359 Podría ser otro que cojamos 565 00:25:22,359 --> 00:25:24,940 Pero vamos a hacer este mismo, este departamento 566 00:25:24,940 --> 00:25:26,480 Pues por ejemplo, podríamos hacer 567 00:25:26,480 --> 00:25:30,980 Tenemos departamento 568 00:25:30,980 --> 00:25:31,900 Punto 569 00:25:31,900 --> 00:25:33,720 Get empleados 570 00:25:33,720 --> 00:25:36,779 Aquí tengo todos sus empleados 571 00:25:36,779 --> 00:25:37,460 ¿Vale? 572 00:25:39,539 --> 00:25:41,059 Él, el hibernate 573 00:25:41,059 --> 00:25:42,779 Se va a ir corriendo a hacer el select 574 00:25:42,779 --> 00:25:44,420 Porque como lo teníamos como lazy 575 00:25:44,420 --> 00:25:47,220 No lo tiene cargado 576 00:25:47,220 --> 00:25:51,119 Vale, pues entonces 577 00:25:51,119 --> 00:25:53,240 Vamos a coger 578 00:25:53,240 --> 00:25:55,779 Todos los empleados 579 00:25:55,779 --> 00:25:57,180 De este departamento 580 00:25:57,180 --> 00:25:59,059 Ahora 581 00:25:59,059 --> 00:26:05,769 Sí, sí, sí 582 00:26:05,769 --> 00:26:07,750 Entonces, ahora 583 00:26:07,750 --> 00:26:08,890 Los 584 00:26:08,890 --> 00:26:12,640 Jolines 585 00:26:12,640 --> 00:26:15,019 Que pesado, sí, es que le pongo el punto 586 00:26:15,019 --> 00:26:17,019 Y me lo extiende con el axe todo el rato, pero bueno 587 00:26:17,019 --> 00:26:19,240 No quiere que haga el stream 588 00:26:19,240 --> 00:26:21,619 vale, get empleados 589 00:26:21,619 --> 00:26:26,180 vale, entonces ahora 590 00:26:26,180 --> 00:26:27,960 ¿qué queremos hacer con toda la lista 591 00:26:27,960 --> 00:26:28,700 de empleados? 592 00:26:29,880 --> 00:26:31,400 una transformación 593 00:26:31,400 --> 00:26:34,059 de tal manera que el nombre de cada 594 00:26:34,059 --> 00:26:35,859 uno de ellos sea 595 00:26:35,859 --> 00:26:37,599 igual a su nombre concatenado 596 00:26:37,599 --> 00:26:39,019 con un guión bajo 597 00:26:39,019 --> 00:26:40,579 ¿vale? entonces 598 00:26:40,579 --> 00:26:44,500 con cada uno de esos empleados 599 00:26:44,500 --> 00:26:45,579 queremos 600 00:26:45,579 --> 00:26:47,740 hacer una cosa, entonces 601 00:26:47,740 --> 00:26:50,200 Haríamos un for each 602 00:26:50,200 --> 00:26:52,140 ¿Verdad? Estoy pensando en voz alta 603 00:26:52,140 --> 00:26:54,279 Y hablar y pensar a la vez me cuesta 604 00:26:54,279 --> 00:26:55,960 Entonces estoy esperando que me digáis vosotros 605 00:26:55,960 --> 00:26:57,720 No os estoy preguntando 606 00:26:57,720 --> 00:26:59,920 ¿Sí? ¿Seguro? 607 00:27:00,920 --> 00:27:02,500 Vale, hago un for each 608 00:27:02,500 --> 00:27:04,920 Y ahora, ¿qué hago en cada for each? 609 00:27:05,019 --> 00:27:06,839 Para cada objeto empleado 610 00:27:06,839 --> 00:27:08,759 De estos 611 00:27:08,759 --> 00:27:10,720 ¿Qué le hago? 612 00:27:11,259 --> 00:27:12,960 Pues para cada objeto empleado 613 00:27:12,960 --> 00:27:15,079 X punto 614 00:27:15,079 --> 00:27:17,160 Get 615 00:27:17,160 --> 00:27:18,460 nombre 616 00:27:18,460 --> 00:27:21,359 sí, sí, sí 617 00:27:21,359 --> 00:27:23,500 sí, pero primero lo voy a concatenar 618 00:27:23,500 --> 00:27:24,819 x.getNombre 619 00:27:24,819 --> 00:27:27,220 más, que ahora lo meto en el set delante 620 00:27:27,220 --> 00:27:27,980 ahora me voy antes 621 00:27:27,980 --> 00:27:32,920 sí, pero que voy ahora 622 00:27:32,920 --> 00:27:34,660 al x.set 623 00:27:34,660 --> 00:27:36,880 pongo primero el set 624 00:27:36,880 --> 00:27:38,940 y ahora ya me voy al principio de la línea 625 00:27:38,940 --> 00:27:42,519 setNombre 626 00:27:42,519 --> 00:27:44,140 vale 627 00:27:44,140 --> 00:27:47,460 vale 628 00:27:47,460 --> 00:27:57,559 que me falta aquí 629 00:27:57,559 --> 00:27:59,740 un punto y coma, lo que pasa es que no voy a necesitar 630 00:27:59,740 --> 00:28:01,660 las llaves, porque solo tengo 631 00:28:01,660 --> 00:28:03,619 una, sí, pero no me hacen 632 00:28:03,619 --> 00:28:05,740 falta, al quitar las llaves voy a poder quitar el punto 633 00:28:05,740 --> 00:28:07,579 y coma, porque las llaves no me hacen falta, ¿verdad? 634 00:28:08,619 --> 00:28:09,559 Vale, como solo tengo 635 00:28:09,559 --> 00:28:11,180 una línea, pues entonces quito 636 00:28:11,180 --> 00:28:13,519 la llave y quito 637 00:28:13,519 --> 00:28:14,539 el punto y coma 638 00:28:14,539 --> 00:28:19,150 ¡Hala! Más bonito así, ¿no? 639 00:28:30,960 --> 00:28:33,599 Pues esa es la clave, depende 640 00:28:33,599 --> 00:28:36,160 Porque hay un atributo que no hemos puesto que es el cascade 641 00:28:36,160 --> 00:28:37,980 Entonces el cascade 642 00:28:37,980 --> 00:28:39,839 Significa, cuando tú 643 00:28:39,839 --> 00:28:41,200 Haces algo con un objeto 644 00:28:41,200 --> 00:28:44,059 Eso lo llevas en cascada 645 00:28:44,059 --> 00:28:45,339 A los que cuelgan de ti 646 00:28:45,339 --> 00:28:47,680 Es un atributo que no hemos puesto 647 00:28:47,680 --> 00:28:49,819 A la hora de hacer la anotación 648 00:28:49,819 --> 00:28:52,440 ¿Vale? Entonces su valor por defecto 649 00:28:52,440 --> 00:28:53,759 Podríamos ver 650 00:28:53,759 --> 00:28:55,180 Preguntarle a HGPT cuál es 651 00:28:55,180 --> 00:28:57,079 Porque depende de cada extremo 652 00:28:57,079 --> 00:28:59,180 Del one to many, many to many, many to one, tiene uno 653 00:28:59,180 --> 00:29:01,380 ¿Su valor por defecto? No sé cuál es. 654 00:29:02,400 --> 00:29:02,599 ¿Vale? 655 00:29:03,000 --> 00:29:05,660 Entonces, aquí hay un atributo que no hemos puesto, 656 00:29:06,299 --> 00:29:07,180 que es el cascade. 657 00:29:07,700 --> 00:29:07,900 ¿Vale? 658 00:29:09,279 --> 00:29:11,259 Que en este... 659 00:29:11,259 --> 00:29:12,400 Sería en empleado, ¿no? 660 00:29:13,440 --> 00:29:15,180 Sería... No, porque estoy... 661 00:29:16,480 --> 00:29:17,140 No, a través de 662 00:29:17,140 --> 00:29:19,160 departamento estoy queriendo 663 00:29:19,160 --> 00:29:21,079 cambiar empleados. Entonces, 664 00:29:21,299 --> 00:29:23,480 yo aquí podría poner un atributo 665 00:29:23,480 --> 00:29:25,180 cascade, a ver que lo... 666 00:29:25,779 --> 00:29:27,140 ¿Cómo se llamaba exactamente? 667 00:29:29,180 --> 00:29:30,420 Tengo que tener por aquí 668 00:29:30,420 --> 00:29:36,069 No, aquí tengo el por defecto 669 00:29:36,069 --> 00:29:39,829 Cascade, vale 670 00:29:39,829 --> 00:29:42,910 A ver 671 00:29:42,910 --> 00:29:50,720 Cascade 672 00:29:50,720 --> 00:29:59,259 Pongo aquí abajo 673 00:29:59,259 --> 00:30:01,740 Cascade 674 00:30:01,740 --> 00:30:03,279 Type. 675 00:30:08,220 --> 00:30:09,720 Ahora estoy en empleado 676 00:30:09,720 --> 00:30:12,400 Ah, no, estaba en departamento 677 00:30:12,400 --> 00:30:13,000 Tienes razón 678 00:30:13,000 --> 00:30:15,380 Bueno, puede 679 00:30:15,380 --> 00:30:16,839 Vale, pero ya que lo tengo 680 00:30:16,839 --> 00:30:19,819 Sí, voy, voy, voy 681 00:30:19,819 --> 00:30:20,460 A ver 682 00:30:20,460 --> 00:30:22,319 A ver 683 00:30:22,319 --> 00:30:25,380 No lo he escrito bien 684 00:30:25,380 --> 00:30:27,619 Ah, en many to one, perdón, es que siempre pongo donde no es 685 00:30:27,619 --> 00:30:30,220 Aquí 686 00:30:30,220 --> 00:30:33,019 Sí, sí, sí, ya la quito 687 00:30:33,019 --> 00:30:34,099 Ya la quito 688 00:30:34,099 --> 00:30:38,599 Vale, a ver 689 00:30:38,599 --> 00:30:45,930 Ah, es que este estaba a medias 690 00:30:45,930 --> 00:30:49,670 Vale, pues vamos a poner aquí 691 00:30:49,670 --> 00:30:52,170 Este 692 00:30:52,170 --> 00:30:55,829 No, le pones donde tú quieras 693 00:30:55,829 --> 00:30:56,710 Ahora lo explico 694 00:30:56,710 --> 00:30:59,970 En cada lado tiene un valor por defecto 695 00:30:59,970 --> 00:31:01,390 Y tú lo puedes especificar 696 00:31:01,390 --> 00:31:03,109 Vamos a ver qué significa 697 00:31:03,109 --> 00:31:05,289 El cascade 698 00:31:05,289 --> 00:31:07,130 Lo puedes poner o no, si no lo pones 699 00:31:07,130 --> 00:31:08,430 Tiene un valor por defecto 700 00:31:08,430 --> 00:31:11,390 Porque hay muchas más relaciones 701 00:31:11,390 --> 00:31:12,730 One to many, many to one 702 00:31:12,730 --> 00:31:14,690 Many to many 703 00:31:14,690 --> 00:31:17,410 ¿vale? en cada una de las posibilidades 704 00:31:17,410 --> 00:31:18,569 tiene un valor por defecto 705 00:31:18,569 --> 00:31:21,049 ¿qué significa el cascade? significa 706 00:31:21,049 --> 00:31:22,930 oye, esta entidad de departamento 707 00:31:22,930 --> 00:31:24,910 cuando yo le haga un persist 708 00:31:24,910 --> 00:31:26,589 cuando le haga un remove 709 00:31:26,589 --> 00:31:29,349 que también lo puede hacer, cuando le haga algo 710 00:31:29,349 --> 00:31:30,690 eso 711 00:31:30,690 --> 00:31:33,230 se va a extender a esta 712 00:31:33,230 --> 00:31:34,390 propiedad que le cuelga 713 00:31:34,390 --> 00:31:37,029 es decir, si yo he cambiado 714 00:31:37,029 --> 00:31:38,970 un empleado a través del 715 00:31:38,970 --> 00:31:41,569 departamento y hago un 716 00:31:41,569 --> 00:31:43,109 persist departamento 717 00:31:43,109 --> 00:31:46,190 Ese persist se va a extender 718 00:31:46,190 --> 00:31:47,509 Al empleado que está colgando 719 00:31:47,509 --> 00:31:49,450 Depende del cascá de type 720 00:31:49,450 --> 00:31:52,009 Porque cascá de type hay de muchos tipos 721 00:31:52,009 --> 00:31:53,950 Si ponéis aquí un punto 722 00:31:53,950 --> 00:31:56,109 Está el 723 00:31:56,109 --> 00:31:56,710 Depende 724 00:31:56,710 --> 00:31:59,450 Si pones este, sí, sí, el persist 725 00:31:59,450 --> 00:32:01,170 Te lo va a transmitir 726 00:32:01,170 --> 00:32:03,869 El remove te lo va a transmitir 727 00:32:03,869 --> 00:32:06,190 El separar, porque recordad el otro día 728 00:32:06,190 --> 00:32:08,269 Que un objeto persistente lo puedes separar 729 00:32:08,269 --> 00:32:10,529 También te va a separar los empleados 730 00:32:10,529 --> 00:32:12,170 El merge 731 00:32:12,170 --> 00:32:13,750 que es cuando tenías uno separado 732 00:32:13,750 --> 00:32:15,789 y volverlo a meterte, lo va... 733 00:32:15,789 --> 00:32:17,869 Entonces, el cascadol es todo. 734 00:32:18,630 --> 00:32:20,130 El cascadeol es 735 00:32:20,130 --> 00:32:21,809 típico en pruebas, pero luego 736 00:32:21,809 --> 00:32:23,730 tiene su peligro, porque 737 00:32:23,730 --> 00:32:26,349 el cascaderemuf es muy peligroso. 738 00:32:26,349 --> 00:32:28,390 Porque tú borras un empleado, 739 00:32:28,509 --> 00:32:30,609 por ejemplo, y es que borrarías 740 00:32:30,609 --> 00:32:32,390 el departamento. Eso no quieres 741 00:32:32,390 --> 00:32:34,589 hacerlo. Cuando eliminas un departamento, 742 00:32:35,529 --> 00:32:36,329 si querría, haces 743 00:32:36,329 --> 00:32:38,430 un remove departamento, puede que no te importe 744 00:32:38,430 --> 00:32:40,009 que se eliminen todos los empleados que tiene. 745 00:32:40,009 --> 00:32:42,690 pero si haces un remove empleado 746 00:32:42,690 --> 00:32:44,369 y tienes en la 747 00:32:44,369 --> 00:32:47,170 many to one el cascá de all 748 00:32:47,170 --> 00:32:49,170 te va a borrar el departamento también 749 00:32:49,170 --> 00:32:54,609 es que 750 00:32:54,609 --> 00:32:57,130 pedís mucho 751 00:32:57,130 --> 00:33:02,250 cascá de persist 752 00:33:02,250 --> 00:33:03,309 es típico 753 00:33:03,309 --> 00:33:06,450 cascá de persist y ya está, es la operación habitual 754 00:33:06,450 --> 00:33:09,150 cuando haces un refresh 755 00:33:09,150 --> 00:33:11,170 para que... 756 00:33:11,170 --> 00:33:12,710 Vale, entonces... 757 00:33:12,710 --> 00:33:14,069 ¿Qué? 758 00:33:15,730 --> 00:33:16,690 Entonces, aquí, 759 00:33:16,809 --> 00:33:18,970 la prueba que estoy 760 00:33:18,970 --> 00:33:20,890 haciendo yo ahora, la prueba que estoy 761 00:33:20,890 --> 00:33:22,869 haciendo yo ahora en el main, vamos a situarnos, 762 00:33:23,730 --> 00:33:25,089 la prueba que estoy haciendo es 763 00:33:25,089 --> 00:33:27,150 a través de departamento 764 00:33:27,150 --> 00:33:28,230 actualizar empleado. 765 00:33:29,230 --> 00:33:30,970 Pues para que a través de departamento pueda 766 00:33:30,970 --> 00:33:32,970 actualizar empleado, el departamento 767 00:33:33,529 --> 00:33:35,329 tiene que tener, el departamento, 768 00:33:35,430 --> 00:33:36,910 el cascade, a all 769 00:33:36,910 --> 00:33:38,789 o a persist. Esto ya como 770 00:33:38,789 --> 00:33:40,869 uno quiera, ¿vale? Por ejemplo, 771 00:33:41,009 --> 00:33:42,630 aquí, a Persist, ¿vale? 772 00:33:43,650 --> 00:33:45,170 El empleado, por ahora, 773 00:33:45,349 --> 00:33:46,670 este sería muy peligroso. 774 00:33:47,789 --> 00:33:48,869 Poner en el empleado 775 00:33:48,869 --> 00:33:50,849 el cascadeón a departamentos, 776 00:33:50,950 --> 00:33:52,930 ese sí que tiene mucho peligro, porque 777 00:33:52,930 --> 00:33:55,150 cualquier cambio en empleado se traslada. 778 00:33:56,329 --> 00:33:56,990 Entonces, aquí, 779 00:33:57,369 --> 00:33:59,369 lo natural 780 00:33:59,369 --> 00:34:01,069 sería dejar el valor por defecto 781 00:34:01,069 --> 00:34:01,349 que 782 00:34:01,349 --> 00:34:04,950 será el Persist, supongo. 783 00:34:05,069 --> 00:34:06,829 Luego se lo vamos a preguntar aquí al tipo este. 784 00:34:08,789 --> 00:34:09,650 y de este persiste. 785 00:34:09,989 --> 00:34:10,449 Muy bien. 786 00:34:11,210 --> 00:34:12,090 Muy bien, me parece. 787 00:34:12,110 --> 00:34:12,469 Muy bien. 788 00:34:13,050 --> 00:34:13,309 Entonces, 789 00:34:13,530 --> 00:34:14,170 en empleado 790 00:34:14,170 --> 00:34:16,050 dejaríamos persiste. 791 00:34:18,610 --> 00:34:19,090 A ver, 792 00:34:19,190 --> 00:34:19,670 en empleado 793 00:34:19,670 --> 00:34:20,969 dejas lo que tú quieras. 794 00:34:21,630 --> 00:34:21,909 A ver, 795 00:34:21,989 --> 00:34:23,010 que esto no es 796 00:34:23,010 --> 00:34:24,650 sota caballo y rey. 797 00:34:25,050 --> 00:34:25,929 Nosotros contamos 798 00:34:25,929 --> 00:34:26,610 de qué va esto, 799 00:34:26,730 --> 00:34:27,090 posibilidades, 800 00:34:27,269 --> 00:34:27,909 herramientas. 801 00:34:28,429 --> 00:34:29,309 Pero no es 802 00:34:29,309 --> 00:34:29,969 esto así 803 00:34:29,969 --> 00:34:30,730 y esto no así. 804 00:34:30,889 --> 00:34:31,269 Depende. 805 00:34:31,809 --> 00:34:32,269 Puede que 806 00:34:32,269 --> 00:34:33,269 los requisitos 807 00:34:33,269 --> 00:34:33,949 de tu aplicación 808 00:34:33,949 --> 00:34:34,570 impliquen 809 00:34:34,570 --> 00:34:36,389 que si tú eliminas 810 00:34:36,389 --> 00:34:36,869 un empleado, 811 00:34:36,949 --> 00:34:37,510 lo eliminas todo, 812 00:34:37,610 --> 00:34:38,190 pues entonces 813 00:34:38,190 --> 00:34:57,510 Esto depende. Yo os cuento las cositas de la vida. Entonces, en nuestro caso, a través del departamento queremos tocar los empleados. Pues, entonces, tengo que hacer el cascade type persist como mínimo para que funcione la funcionalidad que he hecho. 814 00:34:57,510 --> 00:35:04,949 Vale, vamos a ver si esto nos funciona 815 00:35:04,949 --> 00:35:07,210 A ver 816 00:35:07,210 --> 00:35:17,900 Vale, aquí hay un null pointer exception 817 00:35:17,900 --> 00:35:21,599 String departamento get empleados es null 818 00:35:21,599 --> 00:35:28,539 Vale, porque esto es null porque no he hecho el commit de la transacción 819 00:35:28,539 --> 00:35:30,599 Entonces getDepartamentos 820 00:35:30,599 --> 00:35:31,880 O sea este que acabo de crear 821 00:35:31,880 --> 00:35:34,079 Vale 822 00:35:34,079 --> 00:35:36,260 Entonces el flush 823 00:35:36,260 --> 00:35:38,760 Sincroniza con lo que en ese momento 824 00:35:38,760 --> 00:35:39,199 Este 825 00:35:39,199 --> 00:35:41,679 Ya comiteado de antes 826 00:35:41,679 --> 00:35:43,840 Vale, entonces 827 00:35:43,840 --> 00:35:48,380 Es que lo ideal sería coger 828 00:35:48,380 --> 00:35:50,000 Un 829 00:35:50,000 --> 00:35:52,340 A ver 830 00:35:56,400 --> 00:35:57,260 Es por el commit 831 00:35:57,260 --> 00:36:00,699 Vale, vamos a 832 00:36:00,699 --> 00:36:09,449 Vale, hacemos un commit 833 00:36:09,449 --> 00:36:11,510 Para que el departamento tenga un empleado 834 00:36:11,510 --> 00:36:12,309 Al menos 835 00:36:12,309 --> 00:36:15,269 Y ahora de este mismo empleado 836 00:36:15,269 --> 00:36:19,510 Vale, lo que pasa es que claro, hacerlo todo así 837 00:36:19,510 --> 00:36:21,269 En un main a lo bestia, esto es una 838 00:36:21,269 --> 00:36:23,030 Chapucilla, pero no sufráis 839 00:36:23,030 --> 00:36:24,969 Que ahora le vamos a poner algo mucho más chulo 840 00:36:24,969 --> 00:36:33,150 El empleado está en informática 841 00:36:33,150 --> 00:36:34,869 Vale, entonces 842 00:36:34,869 --> 00:36:41,780 Espera que le voy a hacer el 843 00:36:41,780 --> 00:36:43,539 Flush, lo voy a hacer aquí abajo 844 00:36:43,539 --> 00:36:49,980 Para que se sincronice 845 00:36:49,980 --> 00:36:51,820 Con el nuevo departamento que tiene 846 00:36:51,820 --> 00:36:53,519 Vale 847 00:36:53,519 --> 00:36:59,369 A ver ahora 848 00:36:59,369 --> 00:37:04,650 Un segundito 849 00:37:04,650 --> 00:37:07,610 Porque nos estamos 850 00:37:07,610 --> 00:37:09,650 Volviendo locas, vale 851 00:37:09,650 --> 00:37:11,789 Ah, vale, que he hecho 852 00:37:11,789 --> 00:37:12,889 El commit, pero 853 00:37:12,889 --> 00:37:14,829 begin y no 854 00:37:14,829 --> 00:37:15,969 él ha empezado otra vez 855 00:37:15,969 --> 00:37:18,409 en transaction begin 856 00:37:18,409 --> 00:37:21,920 ay que chapucilla 857 00:37:21,920 --> 00:37:23,519 vamos a ver 858 00:37:23,519 --> 00:37:28,500 este begin 859 00:37:28,500 --> 00:37:31,940 aquí otra vez 860 00:37:31,940 --> 00:37:34,659 a ver un momentito 861 00:37:34,659 --> 00:37:35,480 a ver si 862 00:37:35,480 --> 00:37:38,300 es que esto me pasa por no haber 863 00:37:38,300 --> 00:37:40,179 cogido un departamento del otro sitio 864 00:37:40,179 --> 00:37:49,300 Sí, a ver, el tema es que no 865 00:37:49,300 --> 00:37:51,619 Digging, vale 866 00:37:51,619 --> 00:37:55,659 Vale, espera, vamos a 867 00:37:55,659 --> 00:38:01,139 Es que claro, tenemos aquí, a ver 868 00:38:01,139 --> 00:38:03,000 Para empezar vamos a dejar de meter a este aquí 869 00:38:03,000 --> 00:38:04,960 Que lo estamos creando de nuevas 870 00:38:04,960 --> 00:38:06,219 Todo el rato, uno nuevo 871 00:38:06,219 --> 00:38:08,260 Y esto es un desastre, entonces 872 00:38:08,260 --> 00:38:11,260 No, no, no, no, no voy a borrar todo 873 00:38:11,260 --> 00:38:13,219 Sí, tranquilo 874 00:38:13,219 --> 00:38:16,659 A ver, recuperamos por clave 875 00:38:16,659 --> 00:38:18,039 Si estuviera cerrado 876 00:38:18,039 --> 00:38:19,539 Le cambio el departamento 877 00:38:19,539 --> 00:38:21,440 Y ahora, todo esto de aquí está a prueba 878 00:38:21,440 --> 00:38:22,460 Vamos a sacarla de aquí 879 00:38:22,460 --> 00:38:25,860 Le cambio el departamento 880 00:38:25,860 --> 00:38:28,119 Con lo cual todo esto lo vamos a sacar de aquí 881 00:38:28,119 --> 00:38:31,539 Vale, y lo vamos a un método aparte 882 00:38:31,539 --> 00:38:32,760 Venga, pues ya está 883 00:38:32,760 --> 00:38:36,780 A ver, dejamos este main 884 00:38:36,780 --> 00:38:39,059 Que lo que hacía era 885 00:38:39,059 --> 00:38:41,079 Crear un departamento 886 00:38:41,079 --> 00:38:42,679 Recuperar a un empleado 887 00:38:42,679 --> 00:38:45,260 Y poner al empleado en ese departamento 888 00:38:45,260 --> 00:38:47,659 Ya está 889 00:38:47,659 --> 00:38:49,719 Ahora vamos a hacer un método aparte 890 00:38:49,719 --> 00:38:51,599 Para que no tengan esos problemas 891 00:38:51,599 --> 00:38:54,679 Un método aparte 892 00:38:54,679 --> 00:38:55,940 Que es 893 00:38:55,940 --> 00:38:58,659 Cambiar nombre 894 00:38:58,659 --> 00:39:00,199 Empleados 895 00:39:00,199 --> 00:39:02,940 Y le vamos a pasar 896 00:39:02,940 --> 00:39:05,800 El ID del departamento 897 00:39:05,800 --> 00:39:07,320 Del que vamos a cambiar el nombre 898 00:39:07,320 --> 00:39:09,300 Vale, pues ahora 899 00:39:09,300 --> 00:39:11,219 Este método limpio desde el principio 900 00:39:11,219 --> 00:39:13,400 Tendremos que hacernos 901 00:39:13,400 --> 00:39:15,400 Nuestro contexto de persistencia 902 00:39:15,400 --> 00:39:17,239 Venga 903 00:39:17,239 --> 00:39:19,519 Nos hacemos aquí nuestro contexto 904 00:39:19,519 --> 00:39:20,719 De persistencia, vale 905 00:39:20,719 --> 00:39:23,539 Ahora ya, vamos a recuperar el departamento 906 00:39:23,539 --> 00:39:27,400 Bueno, vamos a hacer la transacción 907 00:39:27,400 --> 00:39:27,780 Claro 908 00:39:27,780 --> 00:39:31,019 En punto 909 00:39:31,019 --> 00:39:34,980 GetTransaction.begin 910 00:39:34,980 --> 00:39:37,400 Ahora vamos a recuperar 911 00:39:37,400 --> 00:39:38,280 El departamento 912 00:39:38,280 --> 00:39:40,119 departamento 913 00:39:40,119 --> 00:39:40,880 de 914 00:39:40,880 --> 00:39:44,820 en .find 915 00:39:44,820 --> 00:39:49,519 departamento 916 00:39:49,519 --> 00:39:51,219 .class 917 00:39:51,219 --> 00:39:52,619 de este 918 00:39:52,619 --> 00:39:54,480 objeto de aquí tenemos que hablar luego 919 00:39:54,480 --> 00:39:55,300 muy seriamente 920 00:39:55,300 --> 00:39:58,420 y aquí le pongo el id 921 00:39:58,420 --> 00:40:00,039 id 922 00:40:00,039 --> 00:40:01,840 ahora 923 00:40:01,840 --> 00:40:04,659 nos sacamos, hacemos el stream famoso 924 00:40:04,659 --> 00:40:06,920 de .get 925 00:40:06,920 --> 00:40:12,510 Get empleados 926 00:40:12,510 --> 00:40:14,550 Punto stream 927 00:40:14,550 --> 00:40:17,329 Punto for each 928 00:40:17,329 --> 00:40:20,090 Punto para cada x 929 00:40:20,090 --> 00:40:21,190 ¿Qué me vas a hacer? 930 00:40:21,730 --> 00:40:23,650 Pues para cada x me vas a hacer 931 00:40:23,650 --> 00:40:27,190 X.set nombre 932 00:40:27,190 --> 00:40:30,929 X.get nombre 933 00:40:30,929 --> 00:40:33,329 Más esto de aquí 934 00:40:33,329 --> 00:40:35,030 Vale 935 00:40:35,030 --> 00:40:36,210 Ahora ya 936 00:40:36,210 --> 00:40:38,750 Que le hemos cambiado el nombre a los estos 937 00:40:38,750 --> 00:40:47,329 Hacemos ya en .getTransaction.commit 938 00:40:47,329 --> 00:40:50,309 Y ahora ya cerramos 939 00:40:50,309 --> 00:40:52,829 ¿Vale? 940 00:40:53,050 --> 00:40:53,409 Entonces 941 00:40:53,409 --> 00:40:56,150 El flujo no necesita ningún flujo 942 00:40:56,150 --> 00:40:57,829 Porque no tenemos que sincronizar nada 943 00:40:57,829 --> 00:41:01,889 Entonces, enseñanza importante que se nos olvida 944 00:41:01,889 --> 00:41:03,869 Sobre todo cuando nos ponemos a hacer pruebas y encadenamos 945 00:41:03,869 --> 00:41:06,530 Cuando trabajamos con bases de datos 946 00:41:06,530 --> 00:41:07,429 Sobre todo con RM 947 00:41:07,429 --> 00:41:10,090 atomizar cosas atómicas 948 00:41:10,090 --> 00:41:11,750 métodos atómicos 949 00:41:11,750 --> 00:41:13,349 que hacen las cosas, como hagamos un método 950 00:41:13,349 --> 00:41:14,130 con un montón de cosas 951 00:41:14,130 --> 00:41:17,170 vale, pues entonces 952 00:41:17,170 --> 00:41:19,650 ahora ya, cambiar nombre empleados 953 00:41:19,650 --> 00:41:21,030 lo vamos a llamar desde aquí 954 00:41:21,030 --> 00:41:23,469 pasándole un id que tenga algún empleado 955 00:41:23,469 --> 00:41:24,570 porque si no, no hacemos nada 956 00:41:24,570 --> 00:41:31,960 entonces 957 00:41:31,960 --> 00:41:33,739 vamos a darle un id 958 00:41:33,739 --> 00:41:35,280 ¿qué? 959 00:41:38,940 --> 00:41:39,860 un segundín 960 00:41:39,860 --> 00:41:41,760 que voy a poner un, voy a buscar un id 961 00:41:41,760 --> 00:41:43,820 Que tenga un de 962 00:41:43,820 --> 00:41:44,980 Javi 963 00:41:44,980 --> 00:41:50,320 Venga, Javi, Ana y esta otra Ana 964 00:41:50,320 --> 00:41:51,599 Están todos en el 1 965 00:41:51,599 --> 00:41:53,119 Luego el 1 tiene varios 966 00:41:53,119 --> 00:41:56,260 Pues voy a pasarle yo en mis pruebas el 1 967 00:41:56,260 --> 00:41:57,380 Vosotros lo que os dé la gana 968 00:41:57,380 --> 00:42:00,340 Y aquí el static 969 00:42:00,340 --> 00:42:02,460 A ver, ahora 970 00:42:02,460 --> 00:42:03,199 ¿Qué había que poner? 971 00:42:15,909 --> 00:42:16,429 Vale 972 00:42:16,429 --> 00:42:17,989 Entonces, todo esto de arriba 973 00:42:17,989 --> 00:42:18,849 Toda esta prueba 974 00:42:18,849 --> 00:42:21,909 La voy a meter en un método aparte 975 00:42:21,909 --> 00:42:24,309 Que sea pruebas iniciales 976 00:42:24,309 --> 00:42:26,510 Control X 977 00:42:26,510 --> 00:42:27,530 Lo voy a poner aquí 978 00:42:27,530 --> 00:42:30,090 Private 979 00:42:30,090 --> 00:42:31,909 Static void 980 00:42:31,909 --> 00:42:34,369 Prueba inicial 981 00:42:34,369 --> 00:42:37,110 Lo voy a poner aquí 982 00:42:37,110 --> 00:42:38,309 Para que no sea un rollo 983 00:42:38,309 --> 00:42:43,059 Y ahora ya mi main se queda solamente con 984 00:42:43,059 --> 00:42:44,280 Prueba inicial 985 00:42:44,280 --> 00:42:46,239 Que la voy a comentar 986 00:42:46,239 --> 00:42:47,619 Inicial 987 00:42:47,619 --> 00:42:54,199 Vale, pues ahora ya sí que sí 988 00:42:54,199 --> 00:42:56,460 Vamos a probar esto, cambiar nombre empleados 989 00:42:56,460 --> 00:42:57,739 El código que acabo de hacer 990 00:42:57,739 --> 00:42:58,880 Este de aquí 991 00:42:58,880 --> 00:43:01,480 Vamos a ver 992 00:43:01,480 --> 00:43:04,280 Si hemos acertado 993 00:43:04,280 --> 00:43:06,280 Venga 994 00:43:06,280 --> 00:43:08,920 Vale, ya hemos acertado 995 00:43:08,920 --> 00:43:12,079 Vamos a ver 996 00:43:12,079 --> 00:43:14,380 Nos vamos aquí a empleados 997 00:43:14,380 --> 00:43:16,800 Y aquí están 998 00:43:16,800 --> 00:43:19,099 Todos los del departamento 1 999 00:43:19,099 --> 00:43:21,219 Se les ha cambiado el nombre 1000 00:43:21,219 --> 00:43:28,320 ¿Hasta dónde? 1001 00:43:30,800 --> 00:43:32,920 A ver, este es el método en el que he metido 1002 00:43:32,920 --> 00:43:35,139 La mierdecilla que tenía en el main de antes 1003 00:43:35,139 --> 00:43:37,159 Lo he metido en un método aparte 1004 00:43:37,159 --> 00:43:41,800 En prueba inicial he metido lo que tenía en el main de antes 1005 00:43:41,800 --> 00:43:43,380 Para que no esté ensuciando ahí el main 1006 00:43:43,380 --> 00:43:45,559 Me he limitado a meterlo ahí y ya está 1007 00:43:45,559 --> 00:43:46,699 Y luego me he hecho este otro 1008 00:43:46,699 --> 00:43:48,380 Con eso 1009 00:43:48,380 --> 00:43:50,820 Cada método sería cada caso de uso 1010 00:43:50,820 --> 00:43:52,780 esto es lo que llamamos caso de uso 1011 00:43:52,780 --> 00:43:54,599 lo que mi aplicación hace, cada caso de uso 1012 00:43:54,599 --> 00:43:55,960 es un método, es un caso de servicio 1013 00:43:55,960 --> 00:43:57,679 entonces un segundito 1014 00:43:57,679 --> 00:43:59,619 y ya me callo 1015 00:43:59,619 --> 00:44:02,760 como veis, aunque resistáis 1016 00:44:02,760 --> 00:44:03,480 a creerlo 1017 00:44:03,480 --> 00:44:06,800 esto es infinitamente más fácil y más cómodo 1018 00:44:06,800 --> 00:44:07,619 que JDBC 1019 00:44:07,619 --> 00:44:09,260 es los objetos 1020 00:44:09,260 --> 00:44:14,440 pero a ver 1021 00:44:14,440 --> 00:44:16,360 porque no estoy usando ningún patrón de diseño 1022 00:44:16,360 --> 00:44:19,000 entonces me he hecho un contexto de persistencia con todo a mogollón 1023 00:44:19,000 --> 00:44:20,599 así no se trabaja 1024 00:44:20,599 --> 00:44:25,500 Pero, hombre, por favor, no seáis tan, tan, tan, tan, tan quejicas. 1025 00:44:26,639 --> 00:44:29,840 Tú coges los objetos y trabajas con los objetos. 1026 00:44:30,059 --> 00:44:31,539 Cambias los empleados, le añades. 1027 00:44:32,340 --> 00:44:35,679 A través de la colección le añades un empleado, se lo quitas, lo pones. 1028 00:44:36,059 --> 00:44:37,019 Haces lo que quieras. 1029 00:44:37,780 --> 00:44:38,360 Y ya está. 1030 00:44:40,480 --> 00:44:41,360 Espera un segundito. 1031 00:44:43,039 --> 00:44:44,599 ¿Cómo sería para hacer el file? 1032 00:44:45,099 --> 00:44:45,519 Pero, pues, no. 1033 00:44:45,659 --> 00:44:49,280 En vez de buscar por ID, que te busque por contenido de...