1 00:00:01,459 --> 00:00:08,419 Entonces, en algún sitio, será en el DAO, por supuesto, porque los JPQLs están en el DAO, porque es la parte que toca los datos. 2 00:00:09,080 --> 00:00:28,859 En algún sitio habrá que poner esta JPQLs, esta sí que tiene un WHERE, WHERE e.departamento.id sea igual a 2.id departamento. 3 00:00:28,859 --> 00:00:31,420 Aunque bueno, aquí puedo poner el nombre que quiera, porque luego lo fijo. 4 00:00:31,460 --> 00:00:33,759 y de 5 00:00:33,759 --> 00:00:35,420 vale, entonces 6 00:00:35,420 --> 00:00:37,780 y esta query va siempre 7 00:00:37,780 --> 00:00:39,520 tendrá que ir acompañada 8 00:00:39,520 --> 00:00:40,740 como selecciona un e 9 00:00:40,740 --> 00:00:43,799 esta query tendrá que ir acompañada 10 00:00:43,799 --> 00:00:45,679 de empleado.class 11 00:00:45,679 --> 00:00:47,840 vale 12 00:00:47,840 --> 00:00:49,039 porque las queries 13 00:00:49,039 --> 00:00:52,100 aquí veis llevan siempre 14 00:00:52,100 --> 00:00:54,240 cuando creamos 15 00:00:54,240 --> 00:00:54,740 la query 16 00:00:54,740 --> 00:00:57,719 la sentencia jpql 17 00:00:57,719 --> 00:00:59,200 y al ladito 18 00:00:59,200 --> 00:01:02,520 la clase a la que devuelves. 19 00:01:03,439 --> 00:01:06,719 Entonces, esta query de aquí 20 00:01:06,719 --> 00:01:08,659 la tendremos que poner en algún sitio. 21 00:01:11,060 --> 00:01:12,379 ¿Por qué todo el rato? 22 00:01:14,180 --> 00:01:14,739 Así. 23 00:01:15,219 --> 00:01:16,859 La tendremos que poner en algún sitio 24 00:01:16,859 --> 00:01:18,939 que vaya acompañada de esto. 25 00:01:19,540 --> 00:01:21,719 Luego no pega que yo meta esto 26 00:01:21,719 --> 00:01:23,340 en departamento de implementación, 27 00:01:23,420 --> 00:01:24,760 porque en departamento de implementación 28 00:01:24,760 --> 00:01:28,120 la propiedad tipo 29 00:01:28,120 --> 00:01:30,280 es departamento.class 30 00:01:30,280 --> 00:01:32,099 aquí es que he puesto departamento.class 31 00:01:32,099 --> 00:01:33,640 pero habría sido más bonito si hubiera puesto tipo 32 00:01:33,640 --> 00:01:35,900 ¿verdad? porque tipo es 33 00:01:35,900 --> 00:01:38,040 la propiedad tipo que aquí está oculta 34 00:01:38,040 --> 00:01:40,159 pero que está heredando de implementación DAO 35 00:01:40,159 --> 00:01:41,659 entonces 36 00:01:41,659 --> 00:01:43,760 en departamento 37 00:01:43,760 --> 00:01:45,299 implementación DAO no pega 38 00:01:45,299 --> 00:01:48,180 porque aquí no va a ir departamento.class 39 00:01:48,180 --> 00:01:49,620 ahí va a ir empleado.class 40 00:01:49,620 --> 00:01:52,120 entonces sería más bonito si yo me hago 41 00:01:52,120 --> 00:01:54,319 un empleado 42 00:01:54,319 --> 00:01:56,099 esta misma de aquí, departamento 43 00:01:56,099 --> 00:02:01,980 de implementación, la voy a copiar, pero luego le cambio el nombre, porque yo quiero 44 00:02:01,980 --> 00:02:10,139 una como esta, pero de empleado ahora, entonces esta, hacemos una copia y una pega aquí, 45 00:02:10,139 --> 00:02:29,870 y la llamamos empleado, empleado implementación DAO, la llamamos, ahora, esta empleado implementación 46 00:02:29,870 --> 00:02:30,849 Dao 47 00:02:30,849 --> 00:02:33,250 Cuidado 48 00:02:33,250 --> 00:02:36,349 Recibe empleado 49 00:02:36,349 --> 00:02:38,550 Punto class 50 00:02:38,550 --> 00:02:42,000 Es lo que recibe 51 00:02:42,000 --> 00:02:43,659 Empleado punto class 52 00:02:43,659 --> 00:02:44,500 Vale 53 00:02:44,500 --> 00:02:49,139 Ah, no le he puesto el extens 54 00:02:49,139 --> 00:02:51,319 Ah, bueno, claro, es que el extens 55 00:02:51,319 --> 00:02:53,840 Es de empleado 56 00:02:53,840 --> 00:02:55,699 Vale 57 00:02:55,699 --> 00:02:58,340 Empleado, hereda de la implementación 58 00:02:58,340 --> 00:02:59,360 Pero era para empleado 59 00:02:59,360 --> 00:03:01,539 Recibe esto en su variable tipo 60 00:03:01,539 --> 00:03:28,469 Y ahora este método es el que no quiero. El que quiero ahora ya sí que es public list empleado, get empleados de un departamento por el ID del departamento. 61 00:03:28,469 --> 00:03:33,930 y ahora 62 00:03:33,930 --> 00:03:35,689 ahora ya si que será el 63 00:03:35,689 --> 00:03:37,229 query bla bla bla 64 00:03:37,229 --> 00:03:39,370 poniendo esa query 65 00:03:39,370 --> 00:03:42,949 y esto voy a 66 00:03:42,949 --> 00:03:46,039 lo podéis 67 00:03:46,039 --> 00:03:47,979 copiar de aquí 68 00:03:47,979 --> 00:03:49,099 y ahora lo cambiamos 69 00:03:49,099 --> 00:03:56,710 y ahora 70 00:03:56,710 --> 00:03:59,710 este me va a devolver 71 00:03:59,710 --> 00:04:01,830 una lista de 72 00:04:01,830 --> 00:04:03,270 empleado 73 00:04:03,270 --> 00:04:05,349 empleado 74 00:04:05,349 --> 00:04:08,050 Y ahora la query era esta otra 75 00:04:08,050 --> 00:04:09,169 Que había puesto yo aquí 76 00:04:09,169 --> 00:04:11,169 La query es esta 77 00:04:11,169 --> 00:04:21,980 Y aquí puedo poner 78 00:04:21,980 --> 00:04:24,600 En lugar de empleado.class voy a poner tipo 79 00:04:24,600 --> 00:04:25,579 Que queda más bonito 80 00:04:25,579 --> 00:04:34,959 Vale, entonces, a ver 81 00:04:34,959 --> 00:04:36,519 Fijo 82 00:04:36,519 --> 00:04:38,019 Mi query 83 00:04:38,019 --> 00:04:41,019 Seleccioname todos los empleados 84 00:04:41,019 --> 00:04:43,620 Donde el departamento 85 00:04:43,620 --> 00:04:45,220 Sea este, le fijo 86 00:04:45,220 --> 00:04:47,620 El departamento id para que sea este de aquí 87 00:04:47,620 --> 00:04:49,319 GetSingResult, no 88 00:04:49,319 --> 00:04:57,300 lógicamente porque aquí no es un único resultado aquí es un punto de tres un 89 00:04:57,300 --> 00:05:07,850 list todos los resultados y ahora ya esto este nombre es muy feo aquí lo 90 00:05:07,850 --> 00:05:28,290 llamo así no porque ahí no es tan feo porque es que en volver en una opción a 91 00:05:28,290 --> 00:05:30,089 una lista, me duele hasta a mí. 92 00:05:31,149 --> 00:05:31,329 Y 93 00:05:31,329 --> 00:05:34,290 devolver una lista 94 00:05:34,290 --> 00:05:36,370 es que 95 00:05:36,370 --> 00:05:38,149 mi gran duda, es probable 96 00:05:38,149 --> 00:05:40,290 que esto te devuelva una lista vacía, no un null. 97 00:05:40,990 --> 00:05:42,329 Sino que el resultado de este 98 00:05:42,329 --> 00:05:44,050 JPQL no lo sé, habría que comprobarlo. 99 00:05:44,410 --> 00:05:46,290 Si no hay nadie, te devuelva una 100 00:05:46,290 --> 00:05:47,790 lista vacía, que es diferente a null. 101 00:05:48,410 --> 00:05:50,230 Entonces meterlo en un optional ahí. Pero habría que 102 00:05:50,230 --> 00:05:52,089 comprobarlo, porque no estoy segura que ese select 103 00:05:52,089 --> 00:05:54,250 devuelve un null o lista vacía. Yo creo que lista 104 00:05:54,250 --> 00:05:56,089 vacía, pero no lo sé. 105 00:05:56,730 --> 00:05:57,689 Entonces ahora ya tenemos 106 00:05:57,689 --> 00:05:59,529 El DAO en el sitio correcto 107 00:05:59,529 --> 00:06:00,149 Y ahora aquí 108 00:06:00,149 --> 00:06:03,170 Implementamos 109 00:06:03,170 --> 00:06:05,110 El que acabamos de hacer 110 00:06:05,110 --> 00:06:06,610 Y ya está 111 00:06:06,610 --> 00:06:10,660 Empleado 112 00:06:10,660 --> 00:06:12,699 Implementación DAO 113 00:06:12,699 --> 00:06:23,600 Donde le pasamos el entity manager 114 00:06:23,600 --> 00:06:38,459 Y ahora ya está 115 00:06:38,459 --> 00:06:39,360 Return 116 00:06:39,360 --> 00:06:41,620 DAO. 117 00:06:41,620 --> 00:06:42,339 Empleado 118 00:06:42,339 --> 00:06:45,819 Get empleados 119 00:06:45,819 --> 00:06:46,879 Id 120 00:06:46,879 --> 00:06:50,860 Retun 121 00:06:50,860 --> 00:06:52,399 Que he hecho mal 122 00:06:52,399 --> 00:06:53,060 Y de Depto 123 00:06:53,060 --> 00:07:00,180 Vale, entonces 124 00:07:00,180 --> 00:07:03,040 Vamos a comprobar rápidamente si en el caso de que no tenga 125 00:07:03,040 --> 00:07:04,740 Devuelve nul o lista vacía 126 00:07:04,740 --> 00:07:05,220 Y así 127 00:07:05,220 --> 00:07:07,879 ¿Qué me falta por cerrar? 128 00:07:07,959 --> 00:07:08,939 El en.close 129 00:07:08,939 --> 00:07:21,259 Claro, tienes toda la razón 130 00:07:21,259 --> 00:07:23,060 Claro, sí, sí, sí 131 00:07:23,060 --> 00:07:24,160 Qué tontería más gorda 132 00:07:24,160 --> 00:07:26,819 Sí, sí, sí, lo tengo que guardar, claro 133 00:07:26,819 --> 00:07:31,360 qué espabilados estáis 134 00:07:31,360 --> 00:07:34,040 para luego digáis que vuestro futuro va a ser negro 135 00:07:34,040 --> 00:07:40,379 vale, vale, no, eso lo dice tu amigo 136 00:07:40,379 --> 00:07:41,939 que dice todo el rato 137 00:07:41,939 --> 00:07:43,699 yo me voy a morir de hambre 138 00:07:43,699 --> 00:07:46,480 estoy deprimido porque el futuro es negro 139 00:07:46,480 --> 00:07:47,920 eso lo dice él mucho más que yo 140 00:07:47,920 --> 00:07:54,019 no, lo de son una mierda jamás 141 00:07:54,019 --> 00:07:56,399 lo que dije es que el futuro estaba chungo 142 00:07:56,399 --> 00:07:57,540 eso sí 143 00:07:57,540 --> 00:08:07,920 Hombre, no era para tanto 144 00:08:07,920 --> 00:08:12,000 Ahora ya sí 145 00:08:12,000 --> 00:08:13,040 Ahora ya sí 146 00:08:13,040 --> 00:08:21,500 Ahora ya sí lo tenemos bien hecho 147 00:08:21,500 --> 00:08:23,060 Vamos ya a probarlo 148 00:08:23,060 --> 00:08:24,939 Desde el main 2, dejamos unos métodos 149 00:08:24,939 --> 00:08:27,160 Planteados para que hagáis en vuestros ratos libres 150 00:08:27,160 --> 00:08:29,000 Y ya está 151 00:08:29,000 --> 00:08:40,740 A ver, le dije que en algún momento 152 00:08:40,740 --> 00:08:42,279 Pero hoy en particular 153 00:08:42,279 --> 00:08:43,080 Pues nada 154 00:08:43,080 --> 00:08:49,480 A ver 155 00:08:49,480 --> 00:08:54,100 No os morís de la ansiedad 156 00:08:54,100 --> 00:08:55,320 Vale 157 00:08:55,320 --> 00:08:57,899 Vamos a probar 158 00:08:57,899 --> 00:09:23,899 Voy a quitarle al departamento 3, por ejemplo, le voy a quitar empleados para solucionar esa duda que nos tiene, bueno, por ejemplo, en el 10 no tengo a nadie, ¿verdad? En el departamento 10 no tengo a nadie. Y hay un departamento 10. Vale, pues voy a ver los empleados del departamento 10 a ver si me da nulo o lista vacía. Eso, eso, porque si no, no nos podemos ir. 159 00:09:23,899 --> 00:09:30,320 Pero es que es todo de boquilla 160 00:09:30,320 --> 00:09:34,059 No sé por qué ocurre 161 00:09:34,059 --> 00:09:35,519 ¿No os pasa a vosotros? 162 00:09:35,519 --> 00:09:37,440 Es que tienes el índice de la derecha 163 00:09:37,440 --> 00:09:39,139 Más rápido que el de la izquierda 164 00:09:39,139 --> 00:09:40,860 Será, vale 165 00:09:40,860 --> 00:09:44,500 Vale, entonces 166 00:09:44,500 --> 00:09:47,639 Esto tengo es 167 00:09:47,639 --> 00:09:49,740 Recuperar empleados 168 00:09:49,740 --> 00:09:50,799 Departamento 169 00:09:50,799 --> 00:09:52,799 Y habíamos dicho que en el 10 yo no tengo nada 170 00:09:52,799 --> 00:09:57,259 Y ahora 171 00:09:57,259 --> 00:10:00,980 Vamos a 172 00:10:00,980 --> 00:10:05,559 La prueba de fuego 173 00:10:05,559 --> 00:10:08,419 Que es esta 174 00:10:08,419 --> 00:10:13,820 A ver si me sale vacío 175 00:10:13,820 --> 00:10:16,019 O me sale un pom 176 00:10:16,019 --> 00:10:25,990 Vale 177 00:10:25,990 --> 00:10:27,350 Entonces esto para no liar 178 00:10:27,350 --> 00:10:29,470 Lo quito de ahí 179 00:10:29,470 --> 00:10:42,759 Mi intuición era cierta 180 00:10:42,759 --> 00:10:45,019 No te devuelve un null sino una lista vacía 181 00:10:45,019 --> 00:10:46,740 Es que sería muy cutre 182 00:10:46,740 --> 00:10:48,759 Si devolviera un null el jpql 183 00:10:48,759 --> 00:10:49,379 Con un sel 184 00:10:49,379 --> 00:10:51,259 vale, no devuelve nada 185 00:10:51,259 --> 00:10:53,820 porque no tengo a nadie, pero si le doy el empleado 186 00:10:53,820 --> 00:10:55,419 en el 1 sí que trabaja gente 187 00:10:55,419 --> 00:10:57,820 en el 1 sí trabajan 188 00:10:58,919 --> 00:11:03,879 manías, ya sé que son manías 189 00:11:03,879 --> 00:11:05,139 de vieja, lo sé 190 00:11:05,139 --> 00:11:07,759 pero el play de arriba me pone muy 191 00:11:07,759 --> 00:11:09,740 nerviosa hasta que no me asegure de que 192 00:11:09,740 --> 00:11:10,919 lo que está en el historial es 193 00:11:10,919 --> 00:11:13,820 que normalmente en el historial se queda lo último 194 00:11:13,820 --> 00:11:15,559 que has ejecutado, entonces 195 00:11:15,559 --> 00:11:17,399 le das al play y ya está, pero 196 00:11:17,399 --> 00:11:36,230 Ah, listo 197 00:11:36,230 --> 00:11:39,049 Mi programa está a prueba 198 00:11:39,049 --> 00:11:40,950 de Null Pointer Exception 199 00:11:40,950 --> 00:11:45,350 Vale 200 00:11:45,350 --> 00:11:48,269 Sí, no, es que no sabía 201 00:11:48,269 --> 00:11:50,909 pero, a ver, intuía que no podía ser 202 00:11:50,909 --> 00:11:52,250 tan frágil 203 00:11:52,250 --> 00:12:13,490 ¿Vale? Entonces, estos métodos que hemos hecho aquí nosotros, como veis, no nos hayan cuajado. Es que no han necesitado transacción. De hecho, no hemos hecho ningún begin transaction con el em ni commit. 204 00:12:13,490 --> 00:12:16,110 No las hemos hecho porque como solo eran consultas 205 00:12:16,110 --> 00:12:17,990 Si hiciéramos métodos 206 00:12:17,990 --> 00:12:19,129 Que ya sí que hicieran 207 00:12:19,129 --> 00:12:21,409 Tendríamos que hacerlo con la transacción 208 00:12:21,409 --> 00:12:23,129 Entonces vamos a dejar planteados aquí 209 00:12:23,129 --> 00:12:25,269 Unos métodos 210 00:12:25,269 --> 00:12:28,009 Exacto 211 00:12:28,009 --> 00:12:29,850 Vamos a dejar planteados aquí 212 00:12:29,850 --> 00:12:33,809 Uy, qué miedo me das 213 00:12:33,809 --> 00:12:34,889 Me dan tus preguntas 214 00:12:34,889 --> 00:12:37,610 Uf, entonces no me pregunto 215 00:12:37,610 --> 00:12:38,269 Pero no tengo ni idea 216 00:12:38,269 --> 00:12:39,269 Dime 217 00:12:39,269 --> 00:12:56,750 Me he creado un DAD empleado 218 00:12:56,750 --> 00:12:58,210 porque en mi arquitectura 219 00:12:58,210 --> 00:13:00,409 de aquí, yo estoy usando 220 00:13:00,409 --> 00:13:01,350 JPQL 221 00:13:01,350 --> 00:13:04,590 y a JPQL le tengo que pasar aquí el tipo 222 00:13:04,590 --> 00:13:06,370 entonces yo podría poner ahí 223 00:13:06,370 --> 00:13:08,210 empleado 224 00:13:08,210 --> 00:13:10,610 podría meter esto en el DAO 225 00:13:10,610 --> 00:13:12,950 y poner ahí empleado.class 226 00:13:12,950 --> 00:13:14,830 y ya está 227 00:13:14,830 --> 00:13:30,100 claro, pero has llamado 228 00:13:30,100 --> 00:13:32,980 desde un método a otro 229 00:13:32,980 --> 00:13:34,200 en la misma línea horizontal 230 00:13:34,200 --> 00:13:43,879 Claro, pero la has llamado 231 00:13:43,879 --> 00:13:45,320 Sí, en un ratín 232 00:13:45,320 --> 00:13:46,559 ¿Quién es? 233 00:13:47,539 --> 00:13:48,580 Ah, creía que era Alejandra 234 00:13:48,580 --> 00:13:51,500 Que ha venido a... 235 00:13:51,500 --> 00:13:52,320 ¿Por uno de vosotros? 236 00:13:52,320 --> 00:13:53,360 No, igual a vos 237 00:13:53,360 --> 00:13:54,759 Ah 238 00:13:54,759 --> 00:14:01,220 No sé 239 00:14:01,220 --> 00:14:05,639 Vale, ¿qué es lo que has hecho? 240 00:14:05,700 --> 00:14:07,000 Espera un momento que paremos aquí.