1 00:00:00,430 --> 00:00:02,690 Vale, vamos a hacernos el otro main. 2 00:00:09,859 --> 00:00:16,160 Ahora, esta aplicación ya está llegando desde un main que es un poco feo. 3 00:00:16,320 --> 00:00:22,039 Podría llegar desde un controlador, desde un command runner, desde yo que sé. 4 00:00:22,120 --> 00:00:23,559 Podría llegar desde mi sitio, pero nos da igual. 5 00:00:24,019 --> 00:00:27,519 Lo que importa es que nosotros necesitamos este de aquí. 6 00:00:34,659 --> 00:00:35,659 ¿Cómo que otra vez? 7 00:00:37,979 --> 00:00:39,560 Sí, bueno, este main usa el DAO. 8 00:00:40,299 --> 00:00:40,740 Buenas. 9 00:00:42,340 --> 00:00:44,179 Vale 10 00:00:44,179 --> 00:00:46,979 Y aquí tenemos nuestro 11 00:00:46,979 --> 00:00:47,899 Empresa Service 12 00:00:47,899 --> 00:00:50,539 Vale, pues ahora 13 00:00:50,539 --> 00:00:52,520 Queremos nuestro departamento 14 00:00:52,520 --> 00:00:56,659 Entonces, vale 15 00:00:56,659 --> 00:00:58,899 Aquí, como 16 00:00:58,899 --> 00:01:00,920 Estamos haciendo 17 00:01:00,920 --> 00:01:02,380 Mucha, mi hija dio un pantalón 18 00:01:02,380 --> 00:01:02,920 Exactamente 19 00:01:02,920 --> 00:01:05,780 Madre mía, vale 20 00:01:05,780 --> 00:01:07,480 Como tenemos 21 00:01:07,480 --> 00:01:12,840 Como 22 00:01:12,840 --> 00:01:15,000 estamos poniendo 23 00:01:15,000 --> 00:01:17,239 a ver, no te mueras aún 24 00:01:17,239 --> 00:01:19,760 espera unos 80 años 25 00:01:19,760 --> 00:01:25,420 vale, como estamos haciendo muchas 26 00:01:25,420 --> 00:01:27,400 clases y ni siquiera 27 00:01:27,400 --> 00:01:29,140 muchas, porque estoy minimizando un poco 28 00:01:29,140 --> 00:01:31,239 muchas cosas, pues estamos perdiendo un poco 29 00:01:31,239 --> 00:01:33,319 la perspectiva de que todo esto 30 00:01:33,319 --> 00:01:35,299 en realidad nos facilita 31 00:01:35,299 --> 00:01:37,219 las cosas y nos hace la vida mucho más fácil 32 00:01:37,219 --> 00:01:38,760 aunque no lo creamos 33 00:01:38,760 --> 00:01:40,140 estamos perdiendo esa perspectiva 34 00:01:40,140 --> 00:01:43,219 Porque 35 00:01:43,219 --> 00:01:46,439 No es que te parezca como 36 00:01:46,439 --> 00:01:47,299 Lo que estamos haciendo 37 00:01:47,299 --> 00:01:49,980 Estamos haciendo eso tal cual 38 00:01:49,980 --> 00:01:51,060 Hacer la aplicación 39 00:01:51,060 --> 00:01:55,040 Una aplicación usando el DAO 40 00:01:55,040 --> 00:01:56,719 A ver, la parte que no es bien 41 00:01:56,719 --> 00:01:58,359 Es que nuestro 42 00:01:58,359 --> 00:02:00,400 Intercambio con el usuario es a través de un main 43 00:02:00,400 --> 00:02:02,040 Por consola muy feo, pero ya está 44 00:02:02,040 --> 00:02:04,920 A ver, vale para que 45 00:02:04,920 --> 00:02:06,959 Veas como funciona el JPA 46 00:02:06,959 --> 00:02:10,919 los dos mails van a hacer lo mismo 47 00:02:10,919 --> 00:02:13,319 más o menos, sí, este es el bueno 48 00:02:13,319 --> 00:02:14,699 nada es bueno y nada es malo 49 00:02:14,699 --> 00:02:16,180 a vuestra edad estáis con esas 50 00:02:16,180 --> 00:02:21,080 bueno, pues a ver 51 00:02:21,080 --> 00:02:23,120 no perdamos la perspectiva 52 00:02:23,120 --> 00:02:25,060 de que esto nos facilita la vida 53 00:02:25,060 --> 00:02:27,259 yo tengo el servicio 54 00:02:27,259 --> 00:02:29,259 y ya el servicio 55 00:02:29,259 --> 00:02:31,400 me ofrece 56 00:02:31,400 --> 00:02:33,319 lo que a mí me dé la gana 57 00:02:33,319 --> 00:02:34,819 hacer y ya está 58 00:02:34,819 --> 00:02:37,460 me olvido de jdbc 59 00:02:37,460 --> 00:02:39,319 que está por debajo, por supuesto, ahí debajo 60 00:02:39,319 --> 00:02:41,400 escondido, de hacer la conexión 61 00:02:41,400 --> 00:02:43,080 de hacer el selen, me olvido de todo 62 00:02:43,080 --> 00:02:45,439 ahora mismo solo hemos hecho un método de servicio 63 00:02:45,439 --> 00:02:47,060 y podemos haber hecho mil, todos ellos 64 00:02:47,060 --> 00:02:49,479 apoyándose en el DAO, ahora hacemos alguno más 65 00:02:49,479 --> 00:02:50,759 haciendo cosas 66 00:02:50,759 --> 00:02:52,379 tremendamente complejas 67 00:02:52,379 --> 00:02:55,740 y yo ya, mi aplicación tiene el servicio 68 00:02:55,740 --> 00:02:57,180 llama el método que sea 69 00:02:57,180 --> 00:02:59,360 y tan ricamente, entonces todo esto 70 00:02:59,360 --> 00:03:01,500 la idea es que nos facilite el trabajo 71 00:03:01,500 --> 00:03:02,479 lógicamente 72 00:03:02,479 --> 00:03:05,419 Pues venga, vamos a recuperar nuestro departamento 73 00:03:05,419 --> 00:03:07,300 Por ID, aquí es donde nos dan la caja 74 00:03:07,300 --> 00:03:08,379 Con la bomba 75 00:03:08,379 --> 00:03:09,699 ¿Vale? 76 00:03:23,300 --> 00:03:24,360 Departamento por ID 77 00:03:24,360 --> 00:03:26,840 A ver, base de datos 78 00:03:26,840 --> 00:03:30,479 Haced la prueba vosotros 79 00:03:30,479 --> 00:03:32,379 Con un departamento que tengáis, yo tengo aquí 80 00:03:32,379 --> 00:03:33,379 Tropecientos 81 00:03:33,379 --> 00:03:36,360 Sí, porque 82 00:03:36,360 --> 00:03:38,340 En el main anterior teníamos el insert 83 00:03:38,340 --> 00:03:40,379 Todo el rato, vale, entonces 84 00:03:40,379 --> 00:03:42,000 Bueno, pues voy a meter el 1 85 00:03:42,000 --> 00:03:43,819 Para que me salga informática 86 00:03:43,819 --> 00:03:45,479 Vosotros pues el que tengáis 87 00:03:45,479 --> 00:03:47,740 Porque aquí lo ideal sería que empezaran a saliros 88 00:03:47,740 --> 00:03:50,120 O salirme un montón de errores para que lo fuéramos arreglando 89 00:03:50,120 --> 00:03:51,659 Eso sería lo bonito 90 00:03:51,659 --> 00:03:53,180 Vale 91 00:03:53,180 --> 00:03:54,620 Entonces 92 00:03:54,620 --> 00:03:57,780 Pues aquí tengo yo 93 00:03:57,780 --> 00:03:59,039 Mi departamento 94 00:03:59,039 --> 00:04:02,340 Y efectivamente con mi departamento 95 00:04:02,340 --> 00:04:03,699 Yo decido 96 00:04:03,699 --> 00:04:04,840 Que hago con él 97 00:04:04,840 --> 00:04:06,020 Vale 98 00:04:06,020 --> 00:04:07,639 Entonces 99 00:04:07,639 --> 00:04:13,830 Vale entonces 100 00:04:13,830 --> 00:04:28,670 Fijaos qué bonita es mi caja con la bomba. Cuando yo lo saco con el get, no es que me dé el null sin más. Me avisa como normalmente deberíamos avisarnos entre nosotros si somos amables, que es lanzando excepciones. 101 00:04:28,670 --> 00:04:30,730 ¿Vale? Entonces el optional 102 00:04:30,730 --> 00:04:32,750 Ahora acabamos de ver 103 00:04:32,750 --> 00:04:34,430 Otro sentido que tiene 104 00:04:34,430 --> 00:04:37,089 Que es, no es solamente a nivel de control 105 00:04:37,089 --> 00:04:39,069 De código, no solamente 106 00:04:39,069 --> 00:04:41,269 Sino que a nivel de control de código 107 00:04:41,269 --> 00:04:42,870 Está claro, porque si yo escribo 108 00:04:42,870 --> 00:04:44,730 Yo lo que quiero mostrar aquí es 109 00:04:44,730 --> 00:04:46,790 Recuperar 110 00:04:46,790 --> 00:04:50,550 Recuperar departamento por ID 111 00:04:50,550 --> 00:04:52,930 Y aquí quiero ver la lista de empleados 112 00:04:52,930 --> 00:04:54,470 Get empleados, pues no puedes 113 00:04:54,470 --> 00:04:56,870 Porque esto no es el departamento, ah claro, es que es un optional 114 00:04:56,870 --> 00:04:59,029 pues lo saco del optional, vale 115 00:04:59,029 --> 00:05:01,310 ahora lo he sacado del optional y ahora ya 116 00:05:01,310 --> 00:05:02,629 sí que puedo, pero 117 00:05:02,629 --> 00:05:05,350 sacarlo del optional no me da el null 118 00:05:05,350 --> 00:05:07,209 sin más, sacarlo 119 00:05:07,209 --> 00:05:08,610 del optional cuando es null 120 00:05:08,610 --> 00:05:11,310 me lanza una excepción de tipo no such 121 00:05:11,310 --> 00:05:12,389 element de excepción 122 00:05:12,389 --> 00:05:15,170 que es mucho más informativo 123 00:05:15,170 --> 00:05:16,589 que un null pointer excepción 124 00:05:16,589 --> 00:05:19,629 ahí ya te empiezas a quedar un poquito más tranquilo 125 00:05:19,629 --> 00:05:20,569 porque 126 00:05:20,569 --> 00:05:25,009 como si no conocieras a los hombres 127 00:05:25,009 --> 00:05:26,029 hace el favor 128 00:05:26,029 --> 00:05:27,610 en fin 129 00:05:27,610 --> 00:05:32,910 media hora hablando 130 00:05:32,910 --> 00:05:35,910 para que se enteren de cualquier mamonada 131 00:05:35,910 --> 00:05:36,870 bueno 132 00:05:36,870 --> 00:05:40,189 es una broma 133 00:05:40,189 --> 00:05:40,990 es una broma 134 00:05:40,990 --> 00:05:49,990 pero ya sabéis que todo lo digo siempre en contexto de broma 135 00:05:49,990 --> 00:05:51,149 absolutamente todo 136 00:05:51,149 --> 00:05:54,209 entonces por favor os pido que me disculpéis 137 00:05:54,209 --> 00:05:57,689 todo es en contexto 138 00:05:57,689 --> 00:05:59,490 de broma siempre, nunca jamás diría 139 00:05:59,490 --> 00:06:00,449 esas cosas en serio 140 00:06:00,449 --> 00:06:03,509 es que si las pensara me las fallaría, lógicamente 141 00:06:03,509 --> 00:06:05,990 vale, pues entonces 142 00:06:05,990 --> 00:06:08,889 ¿qué vamos a hacer? 143 00:06:09,569 --> 00:06:11,629 vamos a mostrar los empleados 144 00:06:11,629 --> 00:06:13,149 del departamento 145 00:06:13,149 --> 00:06:14,949 primero vamos a comprobar que esto funciona 146 00:06:14,949 --> 00:06:17,790 vamos a mostrar 147 00:06:17,790 --> 00:06:20,550 joder 148 00:06:20,550 --> 00:06:22,589 ¿qué coño es esto? 149 00:06:22,589 --> 00:06:38,430 Vale, entonces ahora este se va aquí 150 00:06:38,430 --> 00:06:45,279 Vale, pues saco mi departamento con id 151 00:06:45,279 --> 00:06:48,220 Lo saco del optional como es si fuera null 152 00:06:48,220 --> 00:06:51,920 Y ahora ya voy a mostrar su nombre 153 00:06:51,920 --> 00:06:55,759 .get ms, perdón 154 00:06:55,759 --> 00:06:58,819 y ahora 155 00:06:58,819 --> 00:07:01,519 .getNombre 156 00:07:01,519 --> 00:07:03,779 por ejemplo, vale, esto solamente 157 00:07:03,779 --> 00:07:05,800 para ver si nuestra arquitectura funciona 158 00:07:05,800 --> 00:07:07,279 porque podemos saber 159 00:07:07,279 --> 00:07:09,639 si la arquitectura funciona, a partir de ahí es 160 00:07:09,639 --> 00:07:11,800 ya rodar, hacer todos los métodos 161 00:07:11,800 --> 00:07:12,639 así de carrerillo 162 00:07:12,639 --> 00:07:15,779 pero vamos a ver si la arquitectura funciona, entonces a mi me debería 163 00:07:15,779 --> 00:07:17,699 salir informática, no sé a vosotros 164 00:07:17,699 --> 00:07:28,759 perfecto, como tenemos en el 165 00:07:28,759 --> 00:07:30,439 persiste ese show 166 00:07:30,439 --> 00:07:32,560 SQL true, pues nos saca 167 00:07:32,560 --> 00:07:34,019 Todo esto me saca informática 168 00:07:34,019 --> 00:07:35,199 Muy bien, vale 169 00:07:35,199 --> 00:07:37,500 Como veis la vida nos la soluciona 170 00:07:37,500 --> 00:07:40,060 Y si yo quiero ahora 171 00:07:40,060 --> 00:07:41,759 Mostrar es 172 00:07:41,759 --> 00:07:43,519 Recuperar 173 00:07:43,519 --> 00:07:45,480 La verdad es que debería 174 00:07:45,480 --> 00:07:48,339 Lo voy a guardar en un sitio para no tirar de él todo el rato 175 00:07:48,339 --> 00:07:50,560 Departamento 176 00:07:50,560 --> 00:07:51,000 De 177 00:07:51,000 --> 00:07:52,720 Iguala 178 00:07:52,720 --> 00:07:59,160 Lo voy a guardar ahí 179 00:07:59,160 --> 00:08:06,600 Vale 180 00:08:06,600 --> 00:08:09,699 Entonces, si yo aquí le doy, un segundito, vamos a probarlo, 181 00:08:10,279 --> 00:08:13,160 el 1000 me saldrá no such element exception 182 00:08:13,160 --> 00:08:21,300 y aquí uno siente un poco menos de ansiedad 183 00:08:21,300 --> 00:08:22,860 que si le sale null pointer exception. 184 00:08:24,240 --> 00:08:26,279 Bueno, a lo que íbamos. 185 00:08:26,920 --> 00:08:30,019 Ahora, vamos a mostrar los nombres de los empleados. 186 00:08:30,019 --> 00:08:34,379 getEmpleados.stream. 187 00:08:45,909 --> 00:08:48,590 vale, venga 188 00:08:48,590 --> 00:08:50,610 este departamento, vamos a sacar 189 00:08:50,610 --> 00:08:52,830 sus empleados, todos sus 190 00:08:52,830 --> 00:08:53,429 nombres 191 00:08:53,429 --> 00:09:07,610 a ver, que me ha salido 192 00:09:07,610 --> 00:09:08,470 bien, perdón 193 00:09:08,470 --> 00:09:11,610 que me tenía que salir mal, un segundo, es que tengo una 194 00:09:11,610 --> 00:09:13,230 un momento, un momento 195 00:09:13,230 --> 00:09:13,769 un momento 196 00:09:13,769 --> 00:09:17,110 si, a mi me ha salido bien 197 00:09:17,110 --> 00:09:18,590 y me tenía que salir mal, un momento 198 00:09:18,590 --> 00:09:20,710 estamos aquí en 199 00:09:20,710 --> 00:09:23,230 esta 200 00:09:23,230 --> 00:09:27,710 Vale 201 00:09:27,710 --> 00:09:29,529 ¿Cómo es que me ha salido? 202 00:09:29,649 --> 00:09:30,470 Si está en lazy 203 00:09:30,470 --> 00:09:34,649 Espérate a ver que estoy ejecutando 204 00:09:34,649 --> 00:09:35,450 Estoy bien 205 00:09:35,450 --> 00:09:47,509 Muy bueno 206 00:09:47,509 --> 00:09:52,169 ¿Por qué me ha salido bien? 207 00:10:20,649 --> 00:10:22,470 A ver, pues esto sí que no lo entiendo. 208 00:10:22,850 --> 00:10:26,730 Me tendría que haber salido un error de inicialización lazy de esta. 209 00:10:29,559 --> 00:10:31,299 ¿Cómo puede ser que no me haya salido? 210 00:10:33,100 --> 00:10:36,120 Un momentito, porque esto no... 211 00:10:36,120 --> 00:10:38,940 Error muy típico que me ha salido. 212 00:10:40,580 --> 00:10:45,340 Cuidado que has hecho una inicialización lazy de estas. 213 00:10:46,360 --> 00:10:47,820 ¿Qué significa esto? 214 00:10:47,980 --> 00:10:49,080 Nos vamos al modelo. 215 00:10:50,100 --> 00:10:50,620 Departamento. 216 00:10:50,620 --> 00:10:52,399 Departamento 217 00:10:52,399 --> 00:10:54,100 Cuando hacemos el find 218 00:10:54,100 --> 00:10:55,240 Para recuperarlo 219 00:10:55,240 --> 00:10:58,360 Él, si nosotros le hemos puesto aquí 220 00:10:58,360 --> 00:11:00,320 En la propiedad empleados de la relación 221 00:11:00,320 --> 00:11:01,440 En la relación 222 00:11:01,440 --> 00:11:04,100 Le habíamos puesto esto, ¿qué significaba? 223 00:11:04,539 --> 00:11:06,379 Que en el momento de hacer el find 224 00:11:06,379 --> 00:11:08,100 Esto no lo recupera 225 00:11:08,100 --> 00:11:10,299 No lo recupera porque es demasiado carga 226 00:11:10,299 --> 00:11:11,799 Demasiado pesado 227 00:11:11,799 --> 00:11:13,759 Entonces, ¿cuándo lo va a recuperar? 228 00:11:13,759 --> 00:11:15,539 Lo recupera cuando yo se lo pida 229 00:11:15,539 --> 00:11:17,620 ¿Vale? Cuando yo se lo pida, sí 230 00:11:17,620 --> 00:11:18,980 Por ejemplo, aquí 231 00:11:18,980 --> 00:11:21,159 Aquí se lo he pedido 232 00:11:21,159 --> 00:11:22,820 Vale, entonces aquí 233 00:11:22,820 --> 00:11:25,279 JPA va corriendo a recuperarlo 234 00:11:25,279 --> 00:11:26,820 Pero claro, ¿qué ha ocurrido? 235 00:11:26,879 --> 00:11:28,179 Que para poder recuperarlo 236 00:11:28,179 --> 00:11:31,279 El contexto de persistencia tiene que seguir abierto 237 00:11:31,279 --> 00:11:32,580 Si no, no puede 238 00:11:32,580 --> 00:11:34,980 Y aquí el contexto de persistencia 239 00:11:34,980 --> 00:11:37,019 Está cerrado porque el contexto de persistencia 240 00:11:37,019 --> 00:11:39,080 Está asociado a un caso de uso 241 00:11:39,080 --> 00:11:40,919 Que es la presencia habitual 242 00:11:40,919 --> 00:11:42,440 Con lo cual se ha cerrado 243 00:11:42,440 --> 00:11:44,220 Yo aquí lo siento pero 244 00:11:44,220 --> 00:11:46,700 No puedo porque 245 00:11:46,700 --> 00:11:47,580 Empleados no están 246 00:11:47,580 --> 00:11:49,620 Arreglos posibles 247 00:11:49,620 --> 00:11:51,399 Dos 248 00:11:51,399 --> 00:11:53,840 Uno, la trampa, el feo 249 00:11:53,840 --> 00:11:56,840 El que te permite sobrevivir 250 00:11:56,840 --> 00:11:58,860 Pero hombre, que es un poco feo 251 00:11:58,860 --> 00:11:59,779 Que es 252 00:11:59,779 --> 00:12:02,919 Mira, tengo mucha prisa 253 00:12:02,919 --> 00:12:04,259 Me han pedido el proyecto para mañana 254 00:12:04,259 --> 00:12:06,259 A tomar por saco 255 00:12:06,259 --> 00:12:08,659 Ahí se queda 256 00:12:08,659 --> 00:12:12,340 Efectivamente 257 00:12:12,340 --> 00:12:14,220 Y aquí ya, pues me lo muestra 258 00:12:14,220 --> 00:12:16,379 Sin ningún problema 259 00:12:16,379 --> 00:12:19,220 Pero hombre, solución fea 260 00:12:19,220 --> 00:12:21,419 Solución fea 261 00:12:21,419 --> 00:12:22,179 Esta, ¿verdad? 262 00:12:23,220 --> 00:12:25,919 Normalmente, a menos que otras circunstancias 263 00:12:25,919 --> 00:12:26,600 O lo que sea 264 00:12:26,600 --> 00:12:28,299 Me lo digan 265 00:12:28,299 --> 00:12:29,740 Pues yo lo pongo así 266 00:12:29,740 --> 00:12:32,039 Entonces, solución bonita 267 00:12:32,039 --> 00:12:35,960 Hacer un método de DAO 268 00:12:35,960 --> 00:12:37,700 El DAO ya empieza a engordar 269 00:12:37,700 --> 00:12:39,759 No pasa nada, los DAOs a veces engordan 270 00:12:39,759 --> 00:12:42,059 Quedarse con cuatro métodos de cruz básicos es raro 271 00:12:42,059 --> 00:12:44,220 Vamos a hacernos un método de DAO 272 00:12:44,220 --> 00:12:44,700 Que sea 273 00:12:44,700 --> 00:12:47,820 recuperar 274 00:12:47,820 --> 00:12:49,940 del IDE con los empleados 275 00:12:49,940 --> 00:12:51,340 ¿vale? 276 00:12:51,879 --> 00:12:52,480 recupero 277 00:12:52,480 --> 00:12:55,659 con todos los empleados y eso me va 278 00:12:55,659 --> 00:12:57,419 a exigir usar un JPQL 279 00:12:57,419 --> 00:13:03,299 claro, no pasa nada 280 00:13:03,299 --> 00:13:05,679 nos vamos a hacer un departamento 281 00:13:05,679 --> 00:13:07,440 dado que herede del otro, con lo cual 282 00:13:07,440 --> 00:13:09,320 tiene todo lo del otro, porque para eso 283 00:13:09,320 --> 00:13:10,639 tenemos la herencia que la conocimos 284 00:13:10,639 --> 00:13:12,220 y le añadimos ese 285 00:13:12,220 --> 00:13:13,620 ¿vale? 286 00:13:14,700 --> 00:13:17,419 ¿Por qué en el Windows es cambiado 287 00:13:17,419 --> 00:13:18,379 departamento? 288 00:13:18,940 --> 00:13:20,059 Antes había opción 289 00:13:20,059 --> 00:13:23,340 Bueno, porque le he hecho el get 290 00:13:23,340 --> 00:13:24,899 directamente para ahorrar líneas 291 00:13:24,899 --> 00:13:26,299 ¿Vale? Dime 292 00:13:26,299 --> 00:13:33,580 Claro, uno que arrastra a los empleados 293 00:13:33,580 --> 00:13:34,220 y otro que no 294 00:13:34,220 --> 00:13:36,779 Tú decides en cada caso de uso 295 00:13:36,779 --> 00:13:39,240 en qué te interesa usar 296 00:13:39,240 --> 00:13:41,519 ¿Vale? Uno arrastra a los empleados y otro no 297 00:13:41,519 --> 00:13:43,679 ¿Vale? En nuestro caso nos sirve 298 00:13:43,679 --> 00:13:45,500 para hacer una búsqueda 299 00:13:45,500 --> 00:13:46,519 de una JPQL 300 00:13:46,519 --> 00:13:48,539 y probarla, pero bueno 301 00:13:48,539 --> 00:13:50,440 es algo relativamente habitual que tú 302 00:13:50,440 --> 00:13:52,519 des las dos opciones, porque si no tienes que hacer el eager 303 00:13:52,519 --> 00:13:54,259 y si haces el eager, pues es un poco pesado 304 00:13:54,259 --> 00:13:56,500 entonces, como conocemos 305 00:13:56,500 --> 00:13:58,600 la herencia y somos súper expertos con la herencia 306 00:13:58,600 --> 00:14:00,360 nos vamos ahora 307 00:14:00,360 --> 00:14:01,679 a nuestra 308 00:14:01,679 --> 00:14:04,100 a nuestros DAOs 309 00:14:04,100 --> 00:14:06,460 y me voy a hacer un DAO 310 00:14:06,460 --> 00:14:07,960 específico para departamento 311 00:14:07,960 --> 00:14:12,740 sí, aquí sí, en la implementación 312 00:14:12,740 --> 00:14:14,639 de DAO, entonces 313 00:14:14,639 --> 00:14:16,360 new class 314 00:14:16,360 --> 00:14:24,860 Departamento 315 00:14:24,860 --> 00:14:26,659 Dao, ya no sé cómo llamarlo 316 00:14:26,659 --> 00:14:28,059 Implementación 317 00:14:28,059 --> 00:14:39,629 Vale, este 318 00:14:39,629 --> 00:14:42,029 Que herede del otro 319 00:14:42,029 --> 00:14:43,870 Para que tenga todo lo del otro 320 00:14:43,870 --> 00:14:47,009 Este hereda de quién 321 00:14:47,009 --> 00:14:49,730 De implementación Dao 322 00:14:49,730 --> 00:14:52,389 Implementación Dao 323 00:14:52,389 --> 00:14:54,330 Pero ya no hace falta 324 00:14:54,330 --> 00:14:55,629 Que le pongamos los genéricos 325 00:14:55,629 --> 00:14:57,250 Aquí le ponemos 326 00:14:57,250 --> 00:14:59,690 departamento 327 00:14:59,690 --> 00:15:01,529 y aquí le ponemos índice 328 00:15:01,529 --> 00:15:04,350 ¿Vale? 329 00:15:05,809 --> 00:15:06,970 Hereda de este 330 00:15:06,970 --> 00:15:08,029 Entonces 331 00:15:08,029 --> 00:15:11,090 necesita el constructor 332 00:15:11,090 --> 00:15:14,610 Porque los constructores nos heredan 333 00:15:14,610 --> 00:15:17,289 ¿Vale? Pero es que la propiedad 334 00:15:17,289 --> 00:15:19,629 tipo no hace falta que se la pasemos 335 00:15:19,629 --> 00:15:22,830 Luego el constructor lo podemos hacer así 336 00:15:22,830 --> 00:15:27,470 Departamento.class 337 00:15:27,470 --> 00:15:30,549 vale, ya tiene el constructor 338 00:15:30,549 --> 00:15:32,690 porque el constructor hay que hacerlo, cuando heredamos 339 00:15:32,690 --> 00:15:34,870 ya sabemos que se hereda todo menos los constructores 340 00:15:34,870 --> 00:15:36,590 entonces el constructor hay que hacerlo 341 00:15:36,590 --> 00:15:38,629 pues el constructor igual 342 00:15:38,629 --> 00:15:40,370 al DAO este que pasa 343 00:15:40,370 --> 00:15:42,529 la semana y eso sí, eso no cambia, hay que pasárselo 344 00:15:42,529 --> 00:15:43,750 pero el tipo 345 00:15:43,750 --> 00:15:46,629 no hay que pasárselo, se lo fijamos 346 00:15:46,629 --> 00:15:47,649 ya, sabemos que es este 347 00:15:47,649 --> 00:15:50,429 no hay que pasárselo, entonces cuando instanciemos 348 00:15:50,429 --> 00:15:52,210 un departamento de implementación DAO 349 00:15:52,210 --> 00:15:54,070 solamente hay que pasarle esto 350 00:15:54,070 --> 00:15:56,309 vale, y ahora vamos a hacer aquí 351 00:15:56,309 --> 00:16:04,690 el método específico para departamentos, que este me obtiene, si lo meto luego en un 352 00:16:04,690 --> 00:16:42,269 opcional public, opcional departamento, getDepartamentoById con empleados, integerId, vale, 353 00:16:42,269 --> 00:16:48,360 o sea, el general 354 00:16:48,360 --> 00:16:49,299 está para 355 00:16:49,299 --> 00:16:52,000 para cruz básicos 356 00:16:52,000 --> 00:16:53,840 y si quieres algo más complejo 357 00:16:53,840 --> 00:16:56,179 claro, claro 358 00:16:56,179 --> 00:16:57,919 a ver que 359 00:16:57,919 --> 00:16:59,980 de nuevo es una opción 360 00:16:59,980 --> 00:17:02,440 que yo he elegido esta, pues para que no se nos 361 00:17:02,440 --> 00:17:04,259 olviden de los genéricos y bueno, un poquito 362 00:17:04,259 --> 00:17:05,740 resolver 363 00:17:05,740 --> 00:17:10,140 es lo que más te vas 364 00:17:10,140 --> 00:17:12,660 a ver, es lo que más te vas a encontrar yo creo 365 00:17:12,660 --> 00:17:14,220 de cada clase un DAO, pero bueno 366 00:17:14,220 --> 00:17:15,339 que esta opción siempre está 367 00:17:15,339 --> 00:17:18,359 claro, lo puedes poner 368 00:17:18,359 --> 00:17:20,319 en el genérico, efectivamente 369 00:17:20,319 --> 00:17:22,500 y no duplicas tanto método en tanto sitio 370 00:17:22,500 --> 00:17:24,279 vale, entonces, ahora 371 00:17:24,279 --> 00:17:25,299 aquí sí que sí 372 00:17:25,299 --> 00:17:27,920 tenemos que 373 00:17:27,920 --> 00:17:29,740 buscar una sentencia, porque esto 374 00:17:29,740 --> 00:17:32,099 recuperar departamento con empleados 375 00:17:32,099 --> 00:17:34,119 tenemos que hacer, recuperar 376 00:17:34,119 --> 00:17:35,960 el departamento, hacer un join 377 00:17:35,960 --> 00:17:37,779 con los empleados, es decir, eso 378 00:17:37,779 --> 00:17:40,160 vamos a necesitar una sentencia 379 00:17:40,160 --> 00:17:42,099 JPQL, no sabemos 380 00:17:42,099 --> 00:17:44,039 JPQL, no somos expertos, sabemos que es un 381 00:17:44,039 --> 00:17:45,880 lenguaje. Entonces, 382 00:17:46,220 --> 00:17:48,420 aquí, en nuestra 383 00:17:48,420 --> 00:17:49,400 vida real, ¿qué haríamos? 384 00:17:50,000 --> 00:17:52,039 Le preguntamos a HGPT. Vale, pero 385 00:17:52,039 --> 00:17:53,940 vamos a preguntarle bien para que nos 386 00:17:53,940 --> 00:17:55,460 entienda y no nos diga una tontería. 387 00:17:56,039 --> 00:17:57,700 Pues venga, ¿qué le preguntaríais? 388 00:17:58,259 --> 00:17:59,539 ¿Cómo se lo preguntáis? 389 00:18:01,759 --> 00:18:03,160 ¿Cómo preguntáis vosotros? 390 00:18:03,819 --> 00:18:05,140 Le pasas el proyecto, 391 00:18:05,700 --> 00:18:07,279 el usuario mensaje y le dices 392 00:18:07,279 --> 00:18:08,559 necesito esto. 393 00:18:09,579 --> 00:18:11,440 Le pasas el usuario, la contraseña 394 00:18:11,440 --> 00:18:12,980 al administrador y le dices que lo haga. 395 00:18:12,980 --> 00:18:17,500 A ver, ¿preguntamos a mi manera o a la vuestra? 396 00:18:18,119 --> 00:18:18,680 A ver. 397 00:18:19,940 --> 00:18:21,140 A mi manera. 398 00:18:21,140 --> 00:18:27,740 La mía es dándole explicaciones como si fuera un humano. 399 00:18:27,880 --> 00:18:29,640 La vuestra es copia y pega y pototún. 400 00:18:30,839 --> 00:18:31,079 Vale. 401 00:18:31,680 --> 00:18:33,140 Venga, voy a ser más... 402 00:18:36,680 --> 00:18:38,640 O sea, ¿copiaríais y pegaríais así directamente? 403 00:18:38,640 --> 00:18:45,099 Departamento 404 00:18:45,099 --> 00:18:48,579 Venga, voy a hacérselo 405 00:18:48,579 --> 00:18:49,640 Es que copiar y pegar 406 00:18:49,640 --> 00:18:51,380 Casi departamento 407 00:18:51,380 --> 00:18:52,839 Que tiene 408 00:18:52,839 --> 00:18:55,839 Una lista 409 00:18:55,839 --> 00:18:58,660 De empleados 410 00:18:58,660 --> 00:19:02,079 Empleados 411 00:19:02,079 --> 00:19:04,380 Eh 412 00:19:04,380 --> 00:19:08,400 JPA 413 00:19:08,400 --> 00:19:10,500 Necesito 414 00:19:10,500 --> 00:19:12,720 JPQL 415 00:19:12,720 --> 00:19:14,859 Que me 416 00:19:14,859 --> 00:19:16,180 Recupere 417 00:19:16,180 --> 00:19:19,140 Departamento 418 00:19:19,140 --> 00:19:20,660 Con todos 419 00:19:20,660 --> 00:19:22,799 Los empleados 420 00:19:22,799 --> 00:19:25,240 Para saltarme 421 00:19:25,240 --> 00:19:27,000 El lazy 422 00:19:27,000 --> 00:19:28,660 Para que entienda un poco mejor 423 00:19:28,660 --> 00:19:30,339 Vale 424 00:19:30,339 --> 00:19:35,759 JPQL de manual 425 00:19:35,759 --> 00:19:37,400 Pero nosotros no tenemos el manual 426 00:19:37,400 --> 00:19:43,519 Este es nuestro departamento 427 00:19:43,519 --> 00:19:45,519 Con el Lazy, este es empleado 428 00:19:45,519 --> 00:19:48,519 JPQL, correcto 429 00:19:48,519 --> 00:19:49,819 Este de aquí 430 00:19:49,819 --> 00:19:53,980 Uso, mira, nos da hasta el uso y todo 431 00:19:53,980 --> 00:19:56,420 Pues venga, a lo tuneamos 432 00:19:56,420 --> 00:19:58,299 Copiar código 433 00:19:58,299 --> 00:20:04,130 Lo voy a copiar aquí 434 00:20:04,130 --> 00:20:05,769 Si no se lo habéis pedido vosotros 435 00:20:05,769 --> 00:20:08,470 Lo copiáis ahora 436 00:20:08,470 --> 00:20:11,509 vale, selectD 437 00:20:11,509 --> 00:20:13,809 de la clase departamentoD con alias 438 00:20:13,809 --> 00:20:15,349 uneme 439 00:20:15,349 --> 00:20:18,250 con empleados 440 00:20:18,250 --> 00:20:19,470 where D 441 00:20:19,470 --> 00:20:20,309 igual a ID 442 00:20:20,309 --> 00:20:23,609 ID, getSingleResult 443 00:20:23,609 --> 00:20:25,250 me da departamento y ahora 444 00:20:25,250 --> 00:20:25,910 return 445 00:20:25,910 --> 00:20:30,930 opcional 446 00:20:30,930 --> 00:20:32,390 punto 447 00:20:32,390 --> 00:20:35,250 of nullable 448 00:20:35,250 --> 00:20:36,329 D 449 00:20:36,329 --> 00:20:43,980 Así de fácil 450 00:20:43,980 --> 00:20:45,680 La vida ahora es mucho mejor 451 00:20:45,680 --> 00:20:46,779 Ahora con SAGPT 452 00:20:46,779 --> 00:20:49,579 Que antes pues teníamos que dedicar 453 00:20:49,579 --> 00:20:50,779 Un montón de tiempo 454 00:20:50,779 --> 00:20:53,539 A aprender más 455 00:20:53,539 --> 00:20:54,579 JPQL 456 00:20:54,579 --> 00:20:56,500 Ahora ya con saber de qué va 457 00:20:56,500 --> 00:20:58,720 Y para qué sirve 458 00:20:58,720 --> 00:21:07,690 ¿Eh? 459 00:21:07,690 --> 00:21:08,069 ¿Otra vez? 460 00:21:08,710 --> 00:21:10,609 Lo de que bloquean las IPs 461 00:21:10,609 --> 00:21:12,029 Para estar bloqueada 462 00:21:12,029 --> 00:21:16,029 Para que va a estar bloqueada 463 00:21:16,029 --> 00:21:18,289 Para que la gente no le saque el trabajo adelante 464 00:21:18,289 --> 00:21:22,730 A ver, yo no me pondría trabas 465 00:21:22,730 --> 00:21:23,769 A mi propio negocio 466 00:21:23,769 --> 00:21:31,269 Toda la gente que conozco 467 00:21:31,269 --> 00:21:32,529 Que está trabajando en esto 468 00:21:32,529 --> 00:21:34,930 Usa en su trabajo guías 469 00:21:34,930 --> 00:21:37,910 Que me vaya a donde 470 00:21:37,910 --> 00:21:39,890 Alguien ha dicho que me mueva a algún lado 471 00:21:39,890 --> 00:21:43,029 A ver, la izquierda cual es 472 00:21:43,029 --> 00:21:45,650 La otra izquierda 473 00:21:45,650 --> 00:21:47,509 Esta 474 00:21:47,509 --> 00:21:51,690 y si os vais a una empresa 475 00:21:51,690 --> 00:21:54,650 que os capa todas las sillas 476 00:21:54,650 --> 00:21:56,509 para que lo hagáis todo consultando 477 00:21:56,509 --> 00:21:57,769 manuales o de memoria 478 00:21:57,769 --> 00:22:00,250 pues yo qué sé, yo me mosquearía 479 00:22:00,250 --> 00:22:04,589 no sé, entonces 480 00:22:04,589 --> 00:22:06,589 yo qué sé, será la empresa de un abuelito 481 00:22:06,589 --> 00:22:08,029 cebolleta, yo qué sé, no sé 482 00:22:08,029 --> 00:22:09,609 vale 483 00:22:09,609 --> 00:22:14,730 vale, pues a ver, con suerte nos lo ha dicho bien 484 00:22:14,730 --> 00:22:15,769 a mí me suena bien 485 00:22:15,769 --> 00:22:17,250 esta JPQL 486 00:22:17,250 --> 00:22:18,990 me suena estupenda 487 00:22:18,990 --> 00:22:20,789 podríamos hasta leer la explicación 488 00:22:20,789 --> 00:22:23,829 lo ideal sería que leyéramos toda la explicación 489 00:22:23,829 --> 00:22:25,910 que nos ha dado, porque así hasta esta búsqueda 490 00:22:25,910 --> 00:22:27,890 nos ayuda a aprender un poquito más 491 00:22:27,890 --> 00:22:29,210 que luego se nos va a olvidar 492 00:22:29,210 --> 00:22:31,309 15 minutos 493 00:22:31,309 --> 00:22:33,049 vale 494 00:22:33,049 --> 00:22:35,109 entonces, ahora 495 00:22:35,109 --> 00:22:38,329 servicio 496 00:22:38,329 --> 00:22:47,859 a ver, voy a copiar 497 00:22:47,859 --> 00:22:48,559 este 498 00:22:48,559 --> 00:22:52,579 el de tune null 499 00:22:52,579 --> 00:22:54,039 después de ponerle optional 500 00:22:54,039 --> 00:22:55,000 es a mala leche 501 00:22:55,000 --> 00:22:56,440 espera, espera 502 00:22:56,440 --> 00:23:00,500 no, pero aquí no quiero 503 00:23:00,500 --> 00:23:02,359 el optional, en el DAO no quiero 504 00:23:02,359 --> 00:23:04,680 el optional, el DAO tiene que ser 505 00:23:04,680 --> 00:23:06,900 lo más sencillo 506 00:23:06,900 --> 00:23:08,680 posible, el servicio es el que ya 507 00:23:08,680 --> 00:23:09,740 tunea a su modo 508 00:23:09,740 --> 00:23:14,920 el DAO lo más 509 00:23:14,920 --> 00:23:16,859 simple 510 00:23:16,859 --> 00:23:18,980 el servicio que decida 511 00:23:18,980 --> 00:23:20,619 qué es lo que le gusta, qué es lo que no le gusta 512 00:23:20,619 --> 00:23:23,339 ¿dónde hay un optional? 513 00:23:24,579 --> 00:23:25,240 no, lo he quitado 514 00:23:25,240 --> 00:23:26,960 lo he quitado porque 515 00:23:26,960 --> 00:23:28,660 cuando me he ido a hacer el servicio he dicho 516 00:23:28,660 --> 00:23:30,539 no, no, el optional lo quiero aquí, no lo quiero en el down 517 00:23:30,539 --> 00:23:32,819 vale 518 00:23:32,819 --> 00:23:34,619 a ver, de nuevo repito 519 00:23:34,619 --> 00:23:36,920 esto no es dónde va, dónde no va 520 00:23:36,920 --> 00:23:38,119 esto es así, esto no es así 521 00:23:38,119 --> 00:23:41,039 esto es que os flexibilicéis 522 00:23:41,039 --> 00:23:43,019 que entendáis los fundamentos generales 523 00:23:43,019 --> 00:23:43,579 del mundo 524 00:23:43,579 --> 00:23:45,220 y que 525 00:23:45,220 --> 00:23:46,960 cojáis un criterio 526 00:23:46,960 --> 00:23:49,440 y que os fortalezcáis, 527 00:23:49,559 --> 00:23:51,380 que sobreviváis, que seáis unos 528 00:23:51,380 --> 00:23:53,259 tíos espabilados, que 529 00:23:53,259 --> 00:23:55,279 vayáis a la empresa y os diga 530 00:23:55,279 --> 00:23:56,460 jo, este tío realmente 531 00:23:56,460 --> 00:23:59,059 me mola. Este es el objetivo, ¿no? 532 00:23:59,200 --> 00:24:00,619 Esto es así o esto no es así. 533 00:24:01,380 --> 00:24:03,140 Vale. Empresa, service, 534 00:24:03,259 --> 00:24:03,900 ahora ya sí. 535 00:24:05,579 --> 00:24:07,259 Recuperar departamento 536 00:24:07,259 --> 00:24:09,480 y de con empleados. 537 00:24:10,779 --> 00:24:11,339 Con 538 00:24:11,339 --> 00:24:12,299 empleados. 539 00:24:12,299 --> 00:24:14,039 Ahora ya sí 540 00:24:14,039 --> 00:24:15,839 Pues en lugar de llamar 541 00:24:15,839 --> 00:24:18,259 En lugar de implementar este DAO 542 00:24:18,259 --> 00:24:20,359 En lugar de implementar este 543 00:24:20,359 --> 00:24:22,279 Implementamos el 544 00:24:22,279 --> 00:24:23,599 Departamento 545 00:24:23,599 --> 00:24:30,549 DAO 546 00:24:30,549 --> 00:24:32,109 Bueno, en realidad estoy poniendo la referencia 547 00:24:32,109 --> 00:24:34,029 Todo el rato así, podría poner generic DAO 548 00:24:34,029 --> 00:24:35,329 Estoy poniendo todo el rato 549 00:24:35,329 --> 00:24:37,470 Aquí también he puesto la implementación 550 00:24:37,470 --> 00:24:40,349 Podría poner generic DAO 551 00:24:40,349 --> 00:24:41,130 Pero no 552 00:24:41,130 --> 00:24:43,549 Que la referencia que estoy poniendo 553 00:24:43,549 --> 00:24:44,569 Estoy poniendo todo el rato 554 00:24:44,569 --> 00:24:46,630 la concreta 555 00:24:46,630 --> 00:24:48,150 podría poner la superclase 556 00:24:48,150 --> 00:24:50,049 última máxima que es lo natural 557 00:24:50,049 --> 00:24:51,950 es lo que, ¿vale? 558 00:24:52,329 --> 00:24:54,410 es decir, aquí podría poner generic dao 559 00:24:54,410 --> 00:24:55,089 en vez de esto 560 00:24:55,089 --> 00:24:56,890 ¿verdad? 561 00:24:59,049 --> 00:25:00,529 generic dao 562 00:25:00,529 --> 00:25:00,950 ¿no? 563 00:25:04,549 --> 00:25:05,190 claro 564 00:25:05,190 --> 00:25:07,849 y luego ya cuando la instancio 565 00:25:07,849 --> 00:25:09,910 new que hereda de este 566 00:25:09,910 --> 00:25:12,609 pues lo mismo 567 00:25:12,609 --> 00:25:14,269 cuando la instancio 568 00:25:14,269 --> 00:25:15,690 Aquí no instancio 569 00:25:15,690 --> 00:25:17,650 Esto, aquí instancio 570 00:25:17,650 --> 00:25:19,690 Departamento implementación DAO 571 00:25:19,690 --> 00:25:21,730 Departamento 572 00:25:21,730 --> 00:25:25,650 Sí, ahora la quito 573 00:25:25,650 --> 00:25:27,369 Implementación DAO 574 00:25:27,369 --> 00:25:30,289 Donde este se va 575 00:25:30,289 --> 00:25:32,049 Y esto 576 00:25:32,049 --> 00:25:33,109 Hace esto 577 00:25:33,109 --> 00:25:34,849 Y 578 00:25:34,849 --> 00:25:43,160 Bueno, espera 579 00:25:43,160 --> 00:25:44,799 Claro que no es genérico, perdón 580 00:25:44,799 --> 00:25:47,519 Vale, ya está 581 00:25:47,519 --> 00:25:49,319 Y ahora ya 582 00:25:49,319 --> 00:25:51,700 del DAO, no le llamo a su 583 00:25:51,700 --> 00:25:53,779 get, sino que llamo a 584 00:25:53,779 --> 00:25:54,140 su 585 00:25:54,140 --> 00:25:59,589 ah bueno, perdón, claro no, este lo tengo 586 00:25:59,589 --> 00:26:03,019 que no 587 00:26:03,019 --> 00:26:05,440 sí, o castear o este lo tendría 588 00:26:05,440 --> 00:26:07,019 que meter, vale 589 00:26:07,019 --> 00:26:09,319 lógicamente es como lo he 590 00:26:09,319 --> 00:26:11,759 la referencia la he declarado como superclase 591 00:26:11,759 --> 00:26:13,380 no tiene el get por empleados 592 00:26:13,380 --> 00:26:14,779 entonces 593 00:26:14,779 --> 00:26:16,720 podría meterlo aquí 594 00:26:16,720 --> 00:26:18,460 en el genérico 595 00:26:18,460 --> 00:26:23,410 podría meterlo sin cuerpo 596 00:26:23,410 --> 00:26:26,470 pero entonces tendría que convertirla en abstracta 597 00:26:26,470 --> 00:26:28,089 ¿vale? que también podría hacerlo así 598 00:26:28,089 --> 00:26:29,930 no hay ningún problema, porque luego 599 00:26:29,930 --> 00:26:32,410 no esté instanciando de generic DAO en particular 600 00:26:32,410 --> 00:26:34,109 entonces los métodos que están 601 00:26:34,109 --> 00:26:35,109 en las subclases 602 00:26:35,109 --> 00:26:38,049 los metería arriba, terminados 603 00:26:38,049 --> 00:26:39,910 en punto y coma, vacíos, porque ya se 604 00:26:39,910 --> 00:26:42,410 sobreescribirán, y eso me convertiría 605 00:26:42,410 --> 00:26:43,930 generic DAO en clase abstracta 606 00:26:43,930 --> 00:26:46,029 y ya está, y no pasa nada, se convierte 607 00:26:46,029 --> 00:26:47,269 en clase abstracta y se acabó 608 00:26:47,269 --> 00:26:50,049 pero no nos vamos a complicar la vida cambiando eso ahora 609 00:26:50,049 --> 00:26:51,930 para no liarnos, vamos simplemente a 610 00:26:51,930 --> 00:26:54,109 poner aquí departamento implementación 611 00:26:54,109 --> 00:26:55,930 DAO y se acabó, que es más fácil 612 00:26:55,930 --> 00:27:05,589 Sí, me obligaría a implementarla 613 00:27:05,589 --> 00:27:07,390 en implementación DAO, pero podría 614 00:27:07,390 --> 00:27:09,910 hacer la abstracta también, pero claro 615 00:27:09,910 --> 00:27:11,650 en este caso no quiero hacer esa abstracta 616 00:27:11,650 --> 00:27:12,569 porque entonces tendría que 617 00:27:12,569 --> 00:27:15,430 cambiar el diseño haciendo esa abstracta 618 00:27:15,430 --> 00:27:18,329 y luego hacer otras dos que hereden de la abstracta 619 00:27:18,329 --> 00:27:19,769 y ya implementen lo demás 620 00:27:19,769 --> 00:27:21,029 entonces quedaría más chungo 621 00:27:21,029 --> 00:27:24,430 Entonces venga, así y ya está 622 00:27:24,430 --> 00:27:26,390 Departamento implementación DAO 623 00:27:26,390 --> 00:27:28,670 Que departamento implementación DAO 624 00:27:28,670 --> 00:27:29,289 No es 625 00:27:29,289 --> 00:27:32,109 Así, vale, ya está 626 00:27:32,109 --> 00:27:35,069 Vale, más bonito 627 00:27:35,069 --> 00:27:36,529 Y ahora ya 628 00:27:36,529 --> 00:27:40,049 Departamento 629 00:27:40,049 --> 00:27:41,910 DAO punto, ahora ya sí 630 00:27:41,910 --> 00:27:43,829 Get departamento con empleados 631 00:27:43,829 --> 00:27:45,349 Con ID 632 00:27:45,349 --> 00:27:57,069 Bueno, pues si no tiene 633 00:27:57,069 --> 00:27:58,910 La lista estará vacía 634 00:27:58,910 --> 00:28:00,869 Pero al menos no te da 635 00:28:00,869 --> 00:28:02,289 Leis, inicialización, exception 636 00:28:02,289 --> 00:28:04,250 Simplemente la lista es vacía 637 00:28:04,250 --> 00:28:06,309 La información la tienes 638 00:28:06,309 --> 00:28:08,150 Tanto de si es vacía como si es con 639 00:28:08,150 --> 00:28:09,970 Vale, pues ya tenemos 640 00:28:09,970 --> 00:28:12,829 Este servicio de aquí 641 00:28:12,829 --> 00:28:14,569 Y ya lo podemos usar 642 00:28:14,569 --> 00:28:15,490 Desde nuestro main2 643 00:28:15,490 --> 00:28:18,829 Entonces, aquí deberíamos poner 644 00:28:18,829 --> 00:28:20,670 Esto, como ahora lo subo 645 00:28:20,670 --> 00:28:22,769 Todo este proyecto 646 00:28:22,769 --> 00:28:24,309 Lo subo ahora 647 00:28:24,309 --> 00:28:26,450 Esto me da 648 00:28:26,450 --> 00:28:27,369 Lazy 649 00:28:27,369 --> 00:28:30,430 Initialization 650 00:28:30,430 --> 00:28:32,569 Exception 651 00:28:33,369 --> 00:28:34,390 Nos da esto 652 00:28:34,390 --> 00:28:35,750 Dime 653 00:28:35,750 --> 00:28:39,019 ¿Cómo he hecho para que me dé qué? 654 00:28:41,779 --> 00:28:43,519 Porque se os habrá olvidado 655 00:28:43,519 --> 00:28:45,440 Cerrar el end.close aquí 656 00:28:45,440 --> 00:28:47,279 Por eso no os da 657 00:28:47,279 --> 00:28:51,559 Porque se me había olvidado a mí también 658 00:28:51,559 --> 00:28:54,180 Pero es un olvido, debería cerrarse 659 00:28:54,180 --> 00:28:59,980 Si quieres que sea lazy, que es lo normal 660 00:28:59,980 --> 00:29:01,799 A ver, entonces 661 00:29:01,799 --> 00:29:03,839 Aquí ahora ya, esto nos da 662 00:29:03,839 --> 00:29:05,720 Iniciación de exception, lo quitamos 663 00:29:05,720 --> 00:29:07,779 Y ahora ya sí que vamos a recuperar 664 00:29:07,779 --> 00:29:09,819 Los empleados para que veamos que no nos dan 665 00:29:09,819 --> 00:29:15,200 D, D ahora va a ser 666 00:29:15,200 --> 00:29:17,519 el servicio punto 667 00:29:17,519 --> 00:29:20,220 recuperar departamento id con empleados 668 00:29:20,220 --> 00:29:21,460 el 1 669 00:29:21,460 --> 00:29:25,029 y lo saco del 670 00:29:25,029 --> 00:29:26,029 opcional 671 00:29:26,029 --> 00:29:27,990 con el get 672 00:29:27,990 --> 00:29:31,029 y ahora ya sí que me voy a hacer el 673 00:29:31,029 --> 00:29:33,069 d.get empleados 674 00:29:33,069 --> 00:29:34,289 bueno, la sentencia de antes 675 00:29:34,289 --> 00:29:37,759 ¿Pero no hay departamento disponible? 676 00:29:38,039 --> 00:29:38,519 ¿Cómo? 677 00:29:39,799 --> 00:29:40,839 Ah, que tú quieres 678 00:29:40,839 --> 00:29:43,680 Vale, esto 679 00:29:43,680 --> 00:29:45,420 ya no me da el lazy 680 00:29:45,420 --> 00:29:48,000 porque es lazy pero 681 00:29:48,000 --> 00:29:50,960 he forzado con el JPQL 682 00:29:50,960 --> 00:29:52,440 el volcado de los empleados 683 00:29:52,440 --> 00:29:54,579 entonces vamos a ver 684 00:29:54,579 --> 00:29:55,259 si es verdad 685 00:29:55,259 --> 00:30:03,329 aquí tengo a los empleados 686 00:30:03,329 --> 00:30:04,829 ¿vale? 687 00:30:12,680 --> 00:30:13,200 correcto 688 00:30:13,200 --> 00:30:14,220 ¿qué? 689 00:30:15,519 --> 00:30:17,359 si, este proyecto lo voy a subir 690 00:30:17,359 --> 00:30:19,220 por eso estoy poniendo comentarios 691 00:30:19,220 --> 00:30:21,059 ¿vale? 692 00:30:27,230 --> 00:30:28,789 y si yo ahora tuviera 693 00:30:28,789 --> 00:30:30,930 un caso de uso que fuera 694 00:30:30,930 --> 00:30:42,079 por ejemplo 695 00:30:42,079 --> 00:30:47,480 Recuperar los empleados 696 00:30:47,480 --> 00:30:48,559 De un departamento 697 00:30:48,559 --> 00:31:00,200 Empleados 698 00:31:00,200 --> 00:31:02,700 Inter 699 00:31:02,700 --> 00:31:04,880 No, espera, no, no 700 00:31:04,880 --> 00:31:06,160 No era esta la que yo quería 701 00:31:06,160 --> 00:31:08,720 Porque esta es una tontería 702 00:31:08,720 --> 00:31:11,259 Esto lo tengo en el de arriba 703 00:31:11,259 --> 00:31:12,680 No, no, no, yo quería eso 704 00:31:12,680 --> 00:31:15,740 Quería 705 00:31:15,740 --> 00:31:19,920 A ver 706 00:31:19,920 --> 00:31:21,500 ¿Qué tal que yo tenía aquí pensado? 707 00:31:25,819 --> 00:31:27,339 Este es el 708 00:31:27,339 --> 00:31:41,619 Vale 709 00:31:41,619 --> 00:31:52,839 Si era lo que yo quería hacer 710 00:31:52,839 --> 00:32:02,589 Integer, perdón 711 00:32:02,589 --> 00:32:15,349 Vale, pero 712 00:32:15,349 --> 00:32:17,789 Bueno, espérate 713 00:32:17,789 --> 00:32:23,769 Vale, pues ahora 714 00:32:23,769 --> 00:32:28,000 Este, haced este servicio vosotros 715 00:32:28,000 --> 00:32:28,440 Pero 716 00:32:28,440 --> 00:32:32,160 No tenemos los métodos de arriba 717 00:32:32,160 --> 00:32:34,099 O sea, no apoyándoos en otro método 718 00:32:34,099 --> 00:32:36,059 del servicio, no apoyando a otro método 719 00:32:36,059 --> 00:32:37,299 del servicio, entonces aquí 720 00:32:37,299 --> 00:32:39,680 apoyándose directamente en el DAO 721 00:32:39,680 --> 00:32:41,539 estos no los tenemos 722 00:32:41,539 --> 00:32:43,980 porque el único caso de uso 723 00:32:43,980 --> 00:32:46,180 que yo tengo que hacer, a lo mejor es este 724 00:32:46,180 --> 00:32:47,859 estos no los tengo 725 00:32:47,859 --> 00:32:49,880 entonces apoyándose en el DAO 726 00:32:49,880 --> 00:32:52,420 entonces apoyándose en el DAO 727 00:32:52,420 --> 00:32:54,519 haced este vosotros 728 00:32:54,519 --> 00:32:56,220 si tenéis que meter 729 00:32:56,220 --> 00:32:57,579 algún método más 730 00:32:57,579 --> 00:33:00,099 en algún DAO o crear el DAO 731 00:33:00,099 --> 00:33:01,200 de empleado, crearlo 732 00:33:01,200 --> 00:33:03,940 a ver que, como sale 733 00:33:03,940 --> 00:33:05,900 en 10 minutos. ¿Qué cuestiones se os plantean y cómo 734 00:33:05,900 --> 00:33:06,400 lo hacéis? 735 00:33:07,019 --> 00:33:08,880 Recuperar empleados por ID. 736 00:33:09,299 --> 00:33:10,759 Por ID del departamento. 737 00:33:11,400 --> 00:33:13,940 Recuperar empleados que trabaja en un departamento. 738 00:33:14,640 --> 00:33:15,900 Entonces, recuperar 739 00:33:15,900 --> 00:33:16,880 empleados de 740 00:33:16,880 --> 00:33:19,119 departamento. 741 00:33:19,680 --> 00:33:19,880 ¿Vale? 742 00:33:21,079 --> 00:33:23,599 Tuvierais que hacer esto con la salvedad 743 00:33:23,599 --> 00:33:25,759 de que estos de arriba no están 744 00:33:25,759 --> 00:33:27,440 hechos y no hay que apoyarse en ellos. 745 00:33:27,740 --> 00:33:29,000 No os podéis apoyar en ellos. 746 00:33:29,000 --> 00:33:30,819 ¿Qué es lo que se hace en la generación de empleados? 747 00:33:31,220 --> 00:33:32,619 Porque estos trabajan siempre empleados. 748 00:33:32,619 --> 00:33:36,670 A ver, tú haz lo que harías 749 00:33:36,670 --> 00:33:37,529 ¿Vale? Sí 750 00:33:37,529 --> 00:33:40,089 Haz lo que tú harías