1 00:00:02,480 --> 00:00:04,519 Pero bueno, después del recreo tenéis clase con él 2 00:00:04,519 --> 00:00:06,879 Ah, bueno, pues entonces lo único es que 3 00:00:06,879 --> 00:00:10,560 No, ha venido 4 00:00:10,560 --> 00:00:11,720 Pero no le hemos dejado entrar 5 00:00:11,720 --> 00:00:14,019 Vale 6 00:00:14,019 --> 00:00:15,699 Los get, todos 7 00:00:15,699 --> 00:00:18,379 El hashcode y el equals, también lo tiene 8 00:00:18,379 --> 00:00:19,780 Y 9 00:00:19,780 --> 00:00:21,899 Y el toString 10 00:00:21,899 --> 00:00:23,879 El toString también lo tiene 11 00:00:23,879 --> 00:00:26,539 Y ya está, y tiene todo eso, constructor sin parámetros 12 00:00:26,539 --> 00:00:27,179 No tiene 13 00:00:27,179 --> 00:00:30,579 Vale, se le pueden añadir métodos 14 00:00:30,579 --> 00:00:31,620 Pero no es lo habitual 15 00:00:31,620 --> 00:00:34,539 Bueno, vamos a hacernos la matrícula de TO 16 00:00:34,539 --> 00:00:38,219 Venga, ¿qué queremos que tenga la matrícula de TO? 17 00:00:42,539 --> 00:00:44,399 Sí, un récord, un récord, un récord 18 00:00:44,399 --> 00:00:47,119 Es que voy en piloto automático 19 00:00:47,119 --> 00:00:48,939 Lo que no queremos que tenga es alumno 20 00:00:48,939 --> 00:00:50,880 Claro, alumno no lo queremos 21 00:00:50,880 --> 00:00:55,460 Vale, pues entonces, matrícula de TO 22 00:00:55,460 --> 00:00:57,179 Matrícula de TO 23 00:00:57,179 --> 00:01:01,369 Se tendría que tener un nombre más específico, ¿no? 24 00:01:01,369 --> 00:01:02,710 Porque matrículas de TO habrá mil 25 00:01:02,710 --> 00:01:06,209 No, matrícula de TO 26 00:01:06,209 --> 00:01:08,989 Es la clase en la que cae 27 00:01:08,989 --> 00:01:10,709 El objeto matrícula 28 00:01:10,709 --> 00:01:12,409 No tiene por qué hacer varios 29 00:01:12,409 --> 00:01:16,430 Ah, bueno, sí, sí, sí, vale 30 00:01:16,430 --> 00:01:18,189 Sí, sí, hay varias consultas con diferentes 31 00:01:18,189 --> 00:01:20,629 Lo puedo, claro, vale, eso sí 32 00:01:20,629 --> 00:01:22,049 Long id 33 00:01:22,049 --> 00:01:24,689 Uy, ¿dónde estoy metiendo yo esto? Perdón 34 00:01:24,689 --> 00:01:25,849 Control x 35 00:01:25,849 --> 00:01:27,870 Esto lo tengo que meter aquí en los paréntesis 36 00:01:27,870 --> 00:01:30,010 Long 37 00:01:30,010 --> 00:01:32,409 El id, vale 38 00:01:32,409 --> 00:01:35,109 ¿Qué más hemos dicho que tenía? 39 00:01:36,030 --> 00:01:38,650 La matrícula tiene la fecha, ¿verdad? 40 00:01:40,409 --> 00:01:42,510 Local date, fecha 41 00:01:42,510 --> 00:01:46,810 Y la matrícula tiene el nombre de la asignatura, ¿verdad? 42 00:01:48,030 --> 00:01:48,750 Asignatura 43 00:01:48,750 --> 00:01:58,659 Y tiene algo más 44 00:01:58,659 --> 00:02:02,079 La matrícula, el alumno que es del que queremos pasar 45 00:02:02,079 --> 00:02:03,400 ¿Verdad? 46 00:02:03,400 --> 00:02:07,840 Claro, del alumno queremos pasar 47 00:02:07,840 --> 00:02:09,539 Entonces 48 00:02:09,539 --> 00:02:17,849 A ver, porque precisamente nuestro problema 49 00:02:17,849 --> 00:02:19,789 Es cuando yo recupero 50 00:02:19,789 --> 00:02:21,550 Una matrícula, la recupero ya colgando 51 00:02:21,550 --> 00:02:22,870 De un alumno, ¿vale? 52 00:02:22,930 --> 00:02:25,050 Era esto la consulta que hacíamos 53 00:02:25,050 --> 00:02:27,349 Esta, yo recupero mi alumno 54 00:02:27,349 --> 00:02:29,449 Y mi alumno ya viene con la matrícula 55 00:02:29,449 --> 00:02:31,789 Pero dentro de la matrícula no quiero que a la vez 56 00:02:31,789 --> 00:02:33,830 Me aparezca el alumno otra vez, porque uno ya está arriba 57 00:02:33,830 --> 00:02:35,770 si me aparece el alumno 58 00:02:35,770 --> 00:02:38,449 a su vez el alumno tendrá su lista de matrículas 59 00:02:38,449 --> 00:02:40,770 con lo cual, pum, pum, pum, pum, pum, teníamos ese problema 60 00:02:40,770 --> 00:02:45,770 que es lo que 61 00:02:45,770 --> 00:02:48,830 que era para lo que habíamos puesto aquí en origen 62 00:02:48,830 --> 00:02:49,629 el 63 00:02:49,629 --> 00:02:52,150 el JSON ignore, pero claro 64 00:02:52,150 --> 00:02:53,990 esto era un parchecito, no, si 65 00:02:53,990 --> 00:02:56,409 tenemos que evitar tocar el modelo para todo lo que no sea 66 00:02:56,409 --> 00:02:58,090 JPA y 67 00:02:58,090 --> 00:03:00,469 aspectos de negocio, pues de las 68 00:03:00,469 --> 00:03:02,550 columnas de mi tabla 69 00:03:02,550 --> 00:03:04,689 claro, vale, pues entonces matrícula 70 00:03:04,689 --> 00:03:06,229 DTO está y 71 00:03:06,229 --> 00:03:08,210 alumno DTO está 72 00:03:08,210 --> 00:03:09,870 entonces ahora mi controller 73 00:03:09,870 --> 00:03:11,830 que me devuelva un alumno DTO 74 00:03:11,830 --> 00:03:14,550 para eso el servicio me tendrá que devolver 75 00:03:14,550 --> 00:03:16,590 un alumno DTO 76 00:03:16,590 --> 00:03:18,069 entonces me voy al servicio 77 00:03:18,069 --> 00:03:20,699 que 78 00:03:20,699 --> 00:03:23,360 si 79 00:03:23,360 --> 00:03:25,000 entonces 80 00:03:25,000 --> 00:03:30,659 a ver, podría yo aquí en el controller 81 00:03:30,659 --> 00:03:32,759 coger el alumno 82 00:03:32,759 --> 00:03:34,500 y el alumno convertirlo a DTO o hacerlo 83 00:03:34,500 --> 00:03:36,500 en el servicio, vale, pero lo vamos a hacer 84 00:03:36,500 --> 00:03:38,500 en el servicio para que el controller 85 00:03:38,500 --> 00:03:40,259 no se llene de códigos 86 00:03:40,259 --> 00:03:42,319 ¿vale? el controller que tenga la parte 87 00:03:42,319 --> 00:03:44,080 más relacionada con la web, todo lo que sea 88 00:03:44,080 --> 00:03:45,840 manipulación de datos al servicio 89 00:03:45,840 --> 00:03:48,280 pues venga, nos vamos aquí 90 00:03:48,280 --> 00:03:49,460 al service 91 00:03:49,460 --> 00:03:51,419 entonces 92 00:03:51,419 --> 00:03:54,340 este de aquí 93 00:03:54,340 --> 00:03:55,860 vamos a dejarlo, pero 94 00:03:55,860 --> 00:03:59,120 para no quitarlo 95 00:03:59,120 --> 00:04:01,120 y vamos a 96 00:04:01,120 --> 00:04:03,439 poner un getAlumno 97 00:04:03,439 --> 00:04:06,520 DTO 98 00:04:06,520 --> 00:04:08,719 ¿vale? un getAlumno DTO 99 00:04:09,379 --> 00:04:17,819 Entonces, ahora, ¿qué tenemos? 100 00:04:18,500 --> 00:04:25,439 Tenemos que convertir el alumno, getAlumno de TO, 101 00:04:25,600 --> 00:04:27,920 que me devuelva un alumno de TO. 102 00:04:28,420 --> 00:04:30,959 Y ahora tenemos que convertir a nuestro alumno A, 103 00:04:31,060 --> 00:04:33,199 lo tenemos que convertir en alumno de TO para devolverlo. 104 00:04:34,120 --> 00:04:36,079 Entonces, para eso vamos a hacer primero la lista, 105 00:04:36,079 --> 00:04:38,120 vamos a convertir su lista de matrículas. 106 00:04:39,279 --> 00:04:41,920 Pues entonces, A.getMatriculas, 107 00:04:41,920 --> 00:04:45,879 Vamos a mapear sus matrículas 108 00:04:45,879 --> 00:04:47,860 A mapearlas a matrículas de Teo 109 00:04:47,860 --> 00:04:48,399 ¿Verdad? 110 00:04:50,459 --> 00:04:51,220 Entonces 111 00:04:51,220 --> 00:04:54,379 ¿Qué vamos a hacer con las matrículas del alumno? 112 00:04:54,600 --> 00:04:57,139 Primero hemos dicho mapearlas a 113 00:04:57,139 --> 00:04:58,220 De Teo 114 00:04:58,220 --> 00:05:01,079 Pues cada matrícula de su alumno 115 00:05:01,079 --> 00:05:04,480 Mapeamela a 116 00:05:04,480 --> 00:05:06,639 Puedo hacer ya directamente 117 00:05:06,639 --> 00:05:07,860 Un new 118 00:05:07,860 --> 00:05:09,079 Sí, ¿verdad? 119 00:05:09,079 --> 00:05:10,160 Un new 120 00:05:10,160 --> 00:05:12,579 Matrícula 121 00:05:12,579 --> 00:05:15,439 DTO con los parámetros 122 00:05:15,439 --> 00:05:16,279 Que serán 123 00:05:16,279 --> 00:05:18,819 X.matriculaDTO 124 00:05:18,819 --> 00:05:20,160 Lo que pasa es que no sé en qué orden iban 125 00:05:20,160 --> 00:05:22,540 Id, fecha y asignatura 126 00:05:22,540 --> 00:05:24,399 Pues entonces 127 00:05:24,399 --> 00:05:28,819 X.getId 128 00:05:28,819 --> 00:05:36,790 X.get 129 00:05:36,790 --> 00:05:38,629 Fecha 130 00:05:38,629 --> 00:05:39,529 Primero, ¿no? 131 00:05:42,259 --> 00:05:45,220 Y x.get 132 00:05:45,220 --> 00:05:45,800 Vale 133 00:05:45,800 --> 00:05:47,800 Asignatura 134 00:05:47,800 --> 00:06:14,870 Y ahora, de cada matrícula me la transforma para cada X, vuelve todo esto y ahora esto lo convierto en toList, pero quería bajar el punto de abajo. 135 00:06:14,870 --> 00:06:20,490 Joder, todavía me da esto 136 00:06:20,490 --> 00:06:24,290 .toList 137 00:06:24,290 --> 00:06:34,480 Vale, entonces a.getMatriculas.toList 138 00:06:34,480 --> 00:06:41,399 Esto será mi lista de matrícula de TO 139 00:06:41,399 --> 00:06:48,730 A ver, ahora repasamos a ver si lo he hecho bien 140 00:06:48,730 --> 00:06:59,459 Vale 141 00:06:59,459 --> 00:07:30,579 Vale, bueno, pues entonces, primero me he creado una lista de matrículas DTO a partir de las matrículas originales del alumno y ahora ya devuelvo un alumno DTO cuyos campos van a ser a.getid, a.getnombre, no sé en qué orden estaban aquí, id, nombre, email y matrículas. 142 00:07:30,579 --> 00:07:34,439 apunto get 143 00:07:34,439 --> 00:07:36,240 email 144 00:07:36,240 --> 00:07:38,660 y las matrículas que acabo de hacer 145 00:07:38,660 --> 00:07:43,040 vale 146 00:07:43,040 --> 00:07:45,980 ya tengo el servicio este 147 00:07:45,980 --> 00:07:57,389 esto lo voy a bajar 148 00:07:57,389 --> 00:07:59,430 aquí abajo y así se ve mejor 149 00:07:59,430 --> 00:08:15,370 vale, pues entonces mi alumno 150 00:08:15,370 --> 00:08:17,410 controller ya puede 151 00:08:17,410 --> 00:08:22,439 llamar a 152 00:08:22,439 --> 00:08:24,839 vamos a 153 00:08:24,839 --> 00:08:27,060 mi alumno controller 154 00:08:27,060 --> 00:08:29,040 ya puede 155 00:08:29,040 --> 00:08:30,939 llamar a getAlumno 156 00:08:30,939 --> 00:08:31,720 DTO 157 00:08:31,720 --> 00:08:33,240 ¿vale? 158 00:08:34,960 --> 00:08:37,320 esta versión la hemos dejado comentada 159 00:08:37,320 --> 00:08:39,340 ahora vamos a devolver 160 00:08:39,340 --> 00:08:39,960 el DTO 161 00:08:39,960 --> 00:08:42,799 me devuelve el DTO 162 00:08:42,799 --> 00:08:45,259 y el que va a mapear a JSON es el DTO 163 00:08:45,259 --> 00:08:46,159 ya está 164 00:08:46,159 --> 00:08:48,679 y yo aquí en mi record 165 00:08:48,679 --> 00:08:51,039 ahora ya, que quiero cambiar 166 00:08:51,039 --> 00:08:52,299 las cosas y quiero 167 00:08:52,299 --> 00:08:54,740 poner aquí 168 00:08:54,740 --> 00:08:57,000 anotaciones JSON o quiero meter 169 00:08:57,000 --> 00:08:58,759 campos en el DTO 170 00:08:58,759 --> 00:09:00,159 o quiero lo que sea 171 00:09:00,159 --> 00:09:03,080 pues hago lo que me dé la gana, siempre y cuando en el servicio 172 00:09:03,080 --> 00:09:05,100 lo rellene el alumno DTO 173 00:09:05,100 --> 00:09:07,080 con los campos buenos de la consulta 174 00:09:07,080 --> 00:09:08,620 yo tengo que transformar 175 00:09:08,620 --> 00:09:10,860 de alumno normal a alumno DTO, lo tengo que transformar 176 00:09:10,860 --> 00:09:12,860 ¿vale? pero yo aquí en mi DTO 177 00:09:12,860 --> 00:09:14,620 meto lo que me dé la gana 178 00:09:14,620 --> 00:09:16,539 da igual, no pasa nada, lo ensucio 179 00:09:16,539 --> 00:09:18,860 transformo los campos 180 00:09:18,860 --> 00:09:20,179 hago lo que sea, no pasa nada 181 00:09:20,179 --> 00:09:22,480 este si es su sitio, el sitio para hacerlo 182 00:09:22,480 --> 00:09:24,740 pero el sitio nunca sería 183 00:09:24,740 --> 00:09:26,419 el modelo, aquí nunca sería 184 00:09:26,419 --> 00:09:28,840 Pues me apetece que en esta consulta salga algo 185 00:09:28,840 --> 00:09:30,299 Pues le voy a meter aquí un modelo 186 00:09:30,299 --> 00:09:32,860 Y luego en el servicio que me cree este campo 187 00:09:32,860 --> 00:09:35,419 No, alumno y matrícula no lo tocamos 188 00:09:35,419 --> 00:09:36,899 Son las tablas, ya está 189 00:09:36,899 --> 00:09:39,919 Pero aquí tocamos y hacemos lo que nos da la gana 190 00:09:39,919 --> 00:09:42,360 Vale, pues vamos a ver 191 00:09:42,360 --> 00:09:44,879 Si hemos hecho esto bien 192 00:09:44,879 --> 00:09:57,250 Pues sí, lo hemos hecho estupendo 193 00:09:57,250 --> 00:10:01,590 Vamos a quitar el ID a las matrículas 194 00:10:01,590 --> 00:10:03,750 Porque es que como lo hemos dejado igualito 195 00:10:03,750 --> 00:10:05,809 Es que ni siquiera vemos la diferencia de cómo estaba antes 196 00:10:05,809 --> 00:10:09,950 Pero es que como 197 00:10:09,950 --> 00:10:11,789 Tú siempre protestando 198 00:10:11,789 --> 00:10:13,789 Pues no me apetece a mí que salga 199 00:10:13,789 --> 00:10:25,019 Vamos a quitar el ID de matrícula de Teo 200 00:10:25,019 --> 00:10:25,879 Para que no me salga el ID 201 00:10:25,879 --> 00:10:27,960 Entonces eso significa 202 00:10:27,960 --> 00:10:30,200 Que aquí en mi matrícula de Teo 203 00:10:30,200 --> 00:10:31,600 Le quito este campo 204 00:10:31,600 --> 00:10:34,059 Le quito este campito cuando la construyo 205 00:10:34,059 --> 00:10:35,919 ¿Vale? 206 00:10:35,919 --> 00:10:38,019 Le quito este campito aquí en el constructor 207 00:10:38,019 --> 00:10:42,100 Vamos a ver 208 00:10:42,100 --> 00:10:50,649 Venga, dame el alumno 1 209 00:10:50,649 --> 00:10:54,289 Pumba, aquí está mi alumno 1 210 00:10:54,289 --> 00:10:56,690 Mucho más bonito, sin idea de matrícula 211 00:10:56,690 --> 00:10:57,629 ¿Vale? 212 00:10:57,850 --> 00:10:59,169 Pues la forma de 213 00:10:59,169 --> 00:11:01,389 Uy, ¡ah! 214 00:11:02,450 --> 00:11:04,009 Claro, cuando yo toco esto 215 00:11:04,009 --> 00:11:05,429 Este ordenador se vuelve loco 216 00:11:05,429 --> 00:11:10,629 Claro, la sensibilidad de la pantalla 217 00:11:10,629 --> 00:11:12,429 Está conectada a este equipo de aquí 218 00:11:12,429 --> 00:11:15,110 bueno pues 219 00:11:15,110 --> 00:11:17,250 que bonito y que chulo y que bien 220 00:11:17,250 --> 00:11:19,210 pero 221 00:11:19,210 --> 00:11:21,450 nos falta 222 00:11:21,450 --> 00:11:23,429 y con esto ya, bueno la verdad es que 223 00:11:23,429 --> 00:11:25,549 nos faltan hacer métodos muchísimo 224 00:11:25,549 --> 00:11:27,429 mejores y más guapos en el repository 225 00:11:27,429 --> 00:11:32,539 pero 226 00:11:32,539 --> 00:11:36,279 vamos a hacer 227 00:11:36,279 --> 00:11:38,519 para consultas está claro 228 00:11:38,519 --> 00:11:40,879 esta es la película y no hay más película 229 00:11:40,879 --> 00:11:42,259 que esta, ya está 230 00:11:42,259 --> 00:11:44,279 Luego, ¿qué más película hay? 231 00:11:44,899 --> 00:11:47,000 Pues que yo me haga métodos en el repositorio 232 00:11:47,000 --> 00:11:48,019 Súper chulos 233 00:11:48,019 --> 00:11:49,100 Para hacer cosas 234 00:11:49,100 --> 00:11:51,620 Recuperar alumnos, por ejemplo 235 00:11:51,620 --> 00:11:53,720 Imaginaos que queremos 236 00:11:53,720 --> 00:11:55,240 Recuperar 237 00:11:55,240 --> 00:11:57,980 Todos los alumnos que estén matriculados 238 00:11:57,980 --> 00:11:59,100 En una asignatura 239 00:11:59,100 --> 00:12:02,840 Podría ser una consulta 240 00:12:02,840 --> 00:12:04,460 Que yo quiero hacer perfectamente 241 00:12:04,460 --> 00:12:05,980 Quiero hacer un 242 00:12:05,980 --> 00:12:09,139 Una API REST 243 00:12:09,139 --> 00:12:10,340 Que yo ponga 244 00:12:10,340 --> 00:12:11,539 Nombre, asignatura 245 00:12:11,539 --> 00:12:15,200 y me saque los nombres de los alumnos. 246 00:12:15,340 --> 00:12:17,120 Eso estaría muy bien, hacerlo por API REST. 247 00:12:18,019 --> 00:12:20,600 Vale, pues entonces, ¿en qué chip nos pondríamos para hacer eso? 248 00:12:21,000 --> 00:12:23,480 Primero, necesito un método de repositorio, 249 00:12:23,639 --> 00:12:25,799 un método de servicio que lo haga, lógicamente. 250 00:12:26,679 --> 00:12:28,899 El método de servicio necesita un método de repositorio. 251 00:12:29,659 --> 00:12:33,480 Vale, pues entonces, recuperar alumnos por nombre asignatura. 252 00:12:34,139 --> 00:12:35,639 ¿En qué repositorio lo pondríamos? 253 00:12:35,899 --> 00:12:38,299 ¿Alumno repository o matrícula repository? 254 00:12:40,769 --> 00:12:41,529 Recuperar alumnos. 255 00:12:41,929 --> 00:12:42,409 ¿Alumnos? 256 00:12:42,490 --> 00:12:43,149 Recuperar alumnos. 257 00:12:43,169 --> 00:12:49,149 El sitio es el tipo de dato devuelta, no el tipo de dato por el que filtras. 258 00:12:49,730 --> 00:12:54,450 Tú puedes filtrar por matrícula, por Pepito Pérez, por tamaño de las orejas. 259 00:12:54,789 --> 00:12:57,509 Pero lo que marca es lo que tú devuelves. 260 00:12:57,950 --> 00:13:00,870 Luego, nos iríamos a alumno repository. 261 00:13:03,769 --> 00:13:08,269 Sí, es verdad que surgió contigo sobre qué criterios para colocarlo. 262 00:13:08,350 --> 00:13:09,350 El tipo de dato devuelta. 263 00:13:10,149 --> 00:13:12,629 Entonces, alumno repository. 264 00:13:12,629 --> 00:13:14,350 Estoy en el buen sitio, sí 265 00:13:14,350 --> 00:13:16,870 Vale, me voy a hacer ese método 266 00:13:16,870 --> 00:13:22,590 Este no va por clave primaria 267 00:13:22,590 --> 00:13:24,090 Luego este me va a devolver 268 00:13:24,090 --> 00:13:26,850 Aquí nada de alumno DTO 269 00:13:26,850 --> 00:13:27,750 No, no, no 270 00:13:27,750 --> 00:13:30,169 Esto está tocando al modelo, a la base de datos 271 00:13:30,169 --> 00:13:32,870 Entonces el repositorio trabaja con el modelo 272 00:13:32,870 --> 00:13:36,490 El que trabaja con DTO si quiere es el servicio 273 00:13:36,490 --> 00:13:38,750 El servicio sí, el repositorio no 274 00:13:38,750 --> 00:13:40,529 Aquí no ve DTO ni ve nada 275 00:13:40,529 --> 00:13:42,230 Porque me devuelve de la base de datos 276 00:13:42,230 --> 00:13:43,809 Vale, entonces 277 00:13:43,809 --> 00:13:46,889 Aquí podríamos hacerlo como query 278 00:13:46,889 --> 00:13:47,350 ¿Verdad? 279 00:13:48,330 --> 00:13:48,929 Pero 280 00:13:48,929 --> 00:13:53,190 Recordad que uno podría hacer métodos propios 281 00:13:53,190 --> 00:13:54,409 Eh 282 00:13:54,409 --> 00:13:56,809 Ay 283 00:13:56,809 --> 00:13:59,509 Que ansiedad me produce que me lo ponga así en azulito 284 00:13:59,509 --> 00:14:00,649 Bueno 285 00:14:00,649 --> 00:14:03,289 Pero recordad que uno puede hacer métodos propios 286 00:14:03,289 --> 00:14:05,230 Si respetan ciertas reglas 287 00:14:05,230 --> 00:14:06,710 Con el, con esto 288 00:14:06,710 --> 00:14:08,669 Por ejemplo, si alumno 289 00:14:08,669 --> 00:14:10,049 Tiene una cosa que es nombre, ¿no? 290 00:14:10,690 --> 00:14:11,549 Por ejemplo 291 00:14:11,549 --> 00:14:14,190 Recordad que si yo pongo 292 00:14:14,190 --> 00:14:16,269 Esto 293 00:14:16,269 --> 00:14:19,970 String nombre 294 00:14:19,970 --> 00:14:22,330 Pues, ah, ya me lo ha quitado 295 00:14:22,330 --> 00:14:24,029 Menos mal, me está dando mucha angustia 296 00:14:24,029 --> 00:14:26,269 Vale, recordad que 297 00:14:26,269 --> 00:14:28,009 Si ponemos esto, automáticamente 298 00:14:28,009 --> 00:14:30,049 Ya genera una consulta 299 00:14:30,049 --> 00:14:32,149 Que es select by un campo 300 00:14:32,149 --> 00:14:34,610 Que sea nombre, con la n en minúscula 301 00:14:34,610 --> 00:14:35,789 ¿Lo hay? 302 00:14:36,029 --> 00:14:38,470 Si lo hay, entonces estupendo, todo va a funcionar 303 00:14:38,470 --> 00:14:39,570 No lo hay, pues lo hemos liado 304 00:14:39,570 --> 00:14:40,929 ¿Lo hay? 305 00:14:40,929 --> 00:14:43,509 si lo hay, hay un campo de nombre 306 00:14:43,509 --> 00:14:45,230 o podría recuperar por email o lo que fuera 307 00:14:45,230 --> 00:14:45,570 ¿vale? 308 00:14:46,929 --> 00:14:49,350 pero también podemos recuperar 309 00:14:49,350 --> 00:14:51,350 por campos dentro 310 00:14:51,350 --> 00:14:53,269 de campo sin hacer la query 311 00:14:53,269 --> 00:14:54,990 podemos hacer la query, que el otro día de hecho 312 00:14:54,990 --> 00:14:57,590 para hacer eso, recuperábamos clientes 313 00:14:57,590 --> 00:14:59,070 por concepto de pedido 314 00:14:59,070 --> 00:15:00,330 nos hicimos una query 315 00:15:00,330 --> 00:15:02,750 pues no hace falta, este sería lo mismo 316 00:15:02,750 --> 00:15:05,049 recuperamos alumnos 317 00:15:05,049 --> 00:15:07,509 por nombre de la asignatura 318 00:15:07,509 --> 00:15:09,350 pues entonces yo puedo 319 00:15:09,350 --> 00:15:10,210 Poner, bye 320 00:15:10,210 --> 00:15:12,490 Alumno, ¿qué tiene dentro? 321 00:15:13,750 --> 00:15:14,389 Matrículas 322 00:15:14,389 --> 00:15:16,649 Me quiero meter en matrículas 323 00:15:16,649 --> 00:15:18,129 Pues pongo 324 00:15:18,129 --> 00:15:24,059 Matrículas 325 00:15:24,059 --> 00:15:26,220 Y ahora dentro de matrículas 326 00:15:26,220 --> 00:15:28,059 Me quiero meter, ¿dónde? 327 00:15:29,279 --> 00:15:29,919 Este 328 00:15:29,919 --> 00:15:32,720 Pues asignatura 329 00:15:32,720 --> 00:15:34,960 Siempre empezando por mayúscula 330 00:15:34,960 --> 00:15:35,600 Como los get 331 00:15:35,600 --> 00:15:38,460 Y aquí pues nombre asignatura 332 00:15:38,460 --> 00:15:41,019 ¡Hala! Pues la query 333 00:15:41,019 --> 00:15:41,960 Me la va a hacer solito 334 00:15:41,960 --> 00:15:46,360 Se mete dentro de alumnos 335 00:15:46,360 --> 00:15:47,480 Se mete en matrículas 336 00:15:47,480 --> 00:15:49,779 Y dentro de matrículas busca 337 00:15:49,779 --> 00:15:55,740 Las asignaturas 338 00:15:55,740 --> 00:15:57,860 Dentro de las matrículas del alumno 339 00:15:57,860 --> 00:15:59,019 Que se llamen así 340 00:15:59,019 --> 00:16:01,399 Y te devuelve el alumno 341 00:16:01,399 --> 00:16:02,580 Que encuentra asignaturas 342 00:16:02,580 --> 00:16:04,600 Y ya está y te hace la cuernisola 343 00:16:04,600 --> 00:16:05,879 Entonces te puedes ir metiendo 344 00:16:05,879 --> 00:16:09,000 Sí, lo que pasa es que 345 00:16:09,000 --> 00:16:11,940 Normalmente en un modelo con base de datos 346 00:16:11,940 --> 00:16:14,340 como las claves llegan hasta donde llegan 347 00:16:14,340 --> 00:16:15,559 no sueles tener anidado 348 00:16:15,559 --> 00:16:17,980 hasta más de un nivel de anidamiento 349 00:16:17,980 --> 00:16:20,519 aquí lo único que ocurriría es que 350 00:16:20,519 --> 00:16:21,620 si un alumno 351 00:16:21,620 --> 00:16:24,419 estuviera matriculado 352 00:16:24,419 --> 00:16:26,340 de la misma asignatura dos veces 353 00:16:26,340 --> 00:16:28,700 me lo metería en la lista 354 00:16:28,700 --> 00:16:29,519 dos veces 355 00:16:29,519 --> 00:16:36,440 pero es que aún así Sprint estar apañado 356 00:16:36,440 --> 00:16:38,059 que aún así se puede arreglar porque 357 00:16:38,059 --> 00:16:39,580 él admite el este 358 00:16:39,580 --> 00:16:40,460 Disting 359 00:16:40,460 --> 00:16:44,039 Incluso eso se puede arreglar 360 00:16:44,039 --> 00:16:45,700 Entonces, ¿qué quiero decir? 361 00:16:46,759 --> 00:16:48,659 Que hay un mundo de posibilidades 362 00:16:48,659 --> 00:16:50,120 Para hacer métodos 363 00:16:50,120 --> 00:16:51,779 Solo con los nombres sin las queries 364 00:16:51,779 --> 00:16:53,879 Que cubrirían 365 00:16:53,879 --> 00:16:56,200 Pues a lo mejor el 80, el 85% 366 00:16:56,200 --> 00:16:57,799 El 90% de todo lo que uno necesita hacer 367 00:16:57,799 --> 00:16:59,360 En una aplicación normal 368 00:16:59,360 --> 00:17:01,919 Claro, cuando ya quieres hacer pues 369 00:17:01,919 --> 00:17:04,000 JoinFetch o cosas más específicas 370 00:17:04,000 --> 00:17:05,079 Pues plantas la query y ya está 371 00:17:05,079 --> 00:17:06,680 O simplemente cuando no te acuerdas 372 00:17:06,680 --> 00:17:08,380 Como me ocurre a mí en la mayoría de los casos 373 00:17:08,380 --> 00:17:10,039 que no me acuerdo que hay una sintaxis 374 00:17:10,039 --> 00:17:11,180 que te... 375 00:17:11,180 --> 00:17:11,980 ¿Haces tu query? 376 00:17:12,160 --> 00:17:12,880 ¿Haces la query? 377 00:17:13,019 --> 00:17:13,259 ¿O algo? 378 00:17:13,920 --> 00:17:15,039 O sea, esto no te cargaría 379 00:17:15,039 --> 00:17:16,880 el alumno con todo. 380 00:17:18,500 --> 00:17:20,119 Bueno, esto depende del lazy. 381 00:17:20,799 --> 00:17:21,099 ¿Vale? 382 00:17:21,539 --> 00:17:24,619 Claro, si tú quieres saltarte el lazy, 383 00:17:24,900 --> 00:17:26,700 te pones aquí una query con el join fetch. 384 00:17:27,180 --> 00:17:27,619 ¿Vale? 385 00:17:28,599 --> 00:17:29,799 Vale, pues entonces, 386 00:17:30,000 --> 00:17:32,140 ahora, 387 00:17:32,779 --> 00:17:34,299 lo que os dejaría a vosotros, 388 00:17:34,880 --> 00:17:36,579 pues haced el método de servicio, 389 00:17:36,700 --> 00:17:37,539 el método de controller, 390 00:17:37,539 --> 00:17:40,019 para que vosotros pongáis aquí 391 00:17:40,019 --> 00:17:41,859 en la URL 392 00:17:41,859 --> 00:17:44,200 pues API alumnos y un nombre 393 00:17:44,200 --> 00:17:46,319 de asignatura, ah no, eso no puede ser 394 00:17:46,319 --> 00:17:47,740 porque se confundiría con esta otra 395 00:17:47,740 --> 00:17:50,420 pues por ejemplo, API alumnos 396 00:17:50,420 --> 00:17:52,279 asignatura barra 397 00:17:52,279 --> 00:17:54,359 un nombre y que devuelva 398 00:17:54,359 --> 00:17:55,940 todos los alumnos matriculados de esa asignatura 399 00:17:55,940 --> 00:17:57,700 por ejemplo, ¿vale? 400 00:17:58,099 --> 00:17:59,980 entonces, faltaría hacer 401 00:17:59,980 --> 00:18:02,000 método de servicio, DTO 402 00:18:02,000 --> 00:18:04,220 si hace falta porque no se pueden reutilizar esos 403 00:18:04,220 --> 00:18:05,980 y el método del controller 404 00:18:05,980 --> 00:18:07,279 en la ruta correspondiente 405 00:18:07,279 --> 00:18:08,500 para que si me pone aquí 406 00:18:08,500 --> 00:18:09,859 matemáticas. 407 00:18:10,819 --> 00:18:12,339 Le salgan los alumnos 408 00:18:12,339 --> 00:18:13,339 que tienen matemáticas. 409 00:18:13,920 --> 00:18:15,240 Que no quiere que le salgan 410 00:18:15,240 --> 00:18:16,099 los alumnos con todos 411 00:18:16,099 --> 00:18:17,140 los datos completos. 412 00:18:17,579 --> 00:18:18,099 Se tendría que hacer 413 00:18:18,099 --> 00:18:19,299 un alumno de TO para ellos. 414 00:18:19,759 --> 00:18:20,480 Si no se hace un alumno 415 00:18:20,480 --> 00:18:21,099 de TO para ellos, 416 00:18:21,200 --> 00:18:22,000 le salen los alumnos 417 00:18:22,000 --> 00:18:22,460 por todo. 418 00:18:23,079 --> 00:18:23,299 ¿Vale? 419 00:18:24,940 --> 00:18:25,519 Pues venga, 420 00:18:25,599 --> 00:18:26,119 pues eso lo dejamos 421 00:18:26,119 --> 00:18:26,839 para que lo hayáis vosotros. 422 00:18:27,000 --> 00:18:27,440 Y ahora, 423 00:18:29,140 --> 00:18:29,480 esto. 424 00:18:34,950 --> 00:18:35,890 Bueno, pues todo lo que 425 00:18:35,890 --> 00:18:37,269 estamos haciendo son consultas. 426 00:18:41,230 --> 00:18:43,809 y consultas como veis se pueden hacer 427 00:18:43,809 --> 00:18:46,029 pero que pasa si quiero yo 428 00:18:46,029 --> 00:18:47,750 insertar datos 429 00:18:47,750 --> 00:18:48,329 dime 430 00:18:48,329 --> 00:18:55,309 claro 431 00:18:55,309 --> 00:18:58,029 claro, tu primero tendrías que hacer tu método 432 00:18:58,029 --> 00:18:59,450 de servicio, está claro que es 433 00:18:59,450 --> 00:19:02,309 recuperame alumnos por asignatura 434 00:19:02,309 --> 00:19:04,170 te haces tu método de servicio que llama a este 435 00:19:04,170 --> 00:19:05,309 ese no tiene mayor problema 436 00:19:05,309 --> 00:19:08,269 que problema tiene, que lo que te devuelve 437 00:19:08,269 --> 00:19:10,049 tu ya no quieres que sea 438 00:19:10,049 --> 00:19:11,670 a un alumno, sino una list de alumnos, 439 00:19:11,730 --> 00:19:12,829 una list de alumnos DTO. 440 00:19:13,630 --> 00:19:16,009 Con lo cual tendrás que transformarlo. Luego en el servicio 441 00:19:16,009 --> 00:19:17,309 tienes como dos problemas. 442 00:19:18,150 --> 00:19:19,329 Llamar al método, ese fácil, 443 00:19:19,950 --> 00:19:22,109 y luego la lista de alumnos, transformar la lista 444 00:19:22,109 --> 00:19:22,910 de alumnos DTO. 445 00:19:24,910 --> 00:19:26,230 Reutilizas el mismo DTO 446 00:19:26,230 --> 00:19:27,930 si quieres que en esta 447 00:19:27,930 --> 00:19:29,609 que en este resultado te salga 448 00:19:29,609 --> 00:19:31,150 todos los datos de cada alumno. 449 00:19:31,589 --> 00:19:33,869 Te haces otro DTO si quieres que 450 00:19:33,869 --> 00:19:35,829 en esa consulta solo te salga 451 00:19:35,829 --> 00:19:37,569 nombre del alumno, por ejemplo. 452 00:19:38,170 --> 00:19:39,869 Eso por un lado. Eso en el servicio. 453 00:19:40,049 --> 00:19:44,970 Y luego, en el controller, tendrías que hacerte otro de estos. 454 00:19:45,970 --> 00:19:48,369 Otro de estos con otra ruta distinta. 455 00:19:49,369 --> 00:19:49,890 ¿Vale? 456 00:19:50,390 --> 00:19:52,430 Y aquí que llamara a ese método de servicio. 457 00:19:53,029 --> 00:19:53,430 Y ya está. 458 00:19:54,089 --> 00:19:54,289 ¿Vale? 459 00:19:54,690 --> 00:19:55,750 No habría que hacer más que eso. 460 00:20:07,339 --> 00:20:08,720 Venga, esto es rápido en realidad. 461 00:20:09,000 --> 00:20:10,200 Si no sale a la primera, rápido. 462 00:20:11,019 --> 00:20:12,259 Para consultas está claro. 463 00:20:12,259 --> 00:20:17,220 Ahora vamos a intentar a través de nuestra API REST, 464 00:20:17,759 --> 00:20:19,380 vamos a intentar meter cosas también, 465 00:20:19,380 --> 00:20:21,500 darle mi alumno y que lo 466 00:20:21,500 --> 00:20:23,500 inserte, o sea, darle 467 00:20:23,500 --> 00:20:25,480 yo datos. Se los tengo que dar en JSON. 468 00:20:25,579 --> 00:20:25,980 En la URL. 469 00:20:27,480 --> 00:20:29,339 O en la petición 470 00:20:29,339 --> 00:20:31,099 HTTP, que puede ir en URL 471 00:20:31,099 --> 00:20:33,420 si es GET o en el cuerpo si es 472 00:20:33,420 --> 00:20:35,460 POST. En este caso va a ser POST, porque 473 00:20:35,460 --> 00:20:37,220 no puedes mandar un JSON como 474 00:20:37,220 --> 00:20:39,420 parámetros de... 475 00:20:39,420 --> 00:20:41,319 Hombre, sí, como poder puedes un pedazo de string que 476 00:20:41,319 --> 00:20:43,059 te cagas y que lo recupere como request 477 00:20:43,059 --> 00:20:45,380 param y lo vuelque. Pero, hombre, 478 00:20:45,779 --> 00:20:47,119 es feo. Aparte de que estás 479 00:20:47,119 --> 00:20:49,400 mandando. Todos los datos del alumno 480 00:20:49,400 --> 00:20:49,779 ahí. 481 00:20:52,299 --> 00:20:53,039 ¿Puedes poner 482 00:20:53,039 --> 00:20:53,380 algunos? 483 00:20:57,380 --> 00:20:58,019 Hombre, 484 00:20:59,339 --> 00:21:01,200 mandabas un fichero de texto entero 485 00:21:01,200 --> 00:21:02,920 en la URL de arriba. 486 00:21:02,920 --> 00:21:04,599 Hace años, o sea, a principios de los 2000 487 00:21:04,599 --> 00:21:06,859 que las páginas web hacían muchas cosas de esas. 488 00:21:06,940 --> 00:21:07,779 Hace años, joder. 489 00:21:07,980 --> 00:21:10,200 Ya, pero a principios de los 2000 490 00:21:10,200 --> 00:21:13,059 estábamos todos pensando en otras cosas. 491 00:21:13,319 --> 00:21:14,579 Bueno, vosotros ni pensabais. 492 00:21:15,700 --> 00:21:16,400 Ahora tampoco. 493 00:21:17,119 --> 00:21:24,279 Bueno 494 00:21:24,279 --> 00:21:29,400 Jolín, pues si quieres enano 495 00:21:29,400 --> 00:21:29,819 Tú, ¿no? 496 00:21:30,960 --> 00:21:33,579 O sea, tus padres fue conocerse y tenerte 497 00:21:33,579 --> 00:21:34,900 Porque vamos 498 00:21:34,900 --> 00:21:35,980 Estamos hablando del 2000 499 00:21:35,980 --> 00:21:41,599 Madre del amor hermoso 500 00:21:41,599 --> 00:21:46,160 Eso es lo que tener claridad de ideas 501 00:21:46,160 --> 00:21:47,059 Yo quiero un padre 502 00:21:47,059 --> 00:21:49,400 es un padre de mi hijo 503 00:21:49,400 --> 00:21:51,339 oye a ver 504 00:21:51,339 --> 00:21:52,980 ahora va a salir el tema escabroso 505 00:21:52,980 --> 00:21:55,279 la pregunta de, pero seguro que fuiste deseado 506 00:21:55,279 --> 00:21:57,180 pero mejor la dejamos para luego 507 00:21:57,180 --> 00:21:59,079 venga 508 00:21:59,079 --> 00:22:02,180 controller 509 00:22:02,180 --> 00:22:08,980 que bonito es el amor 510 00:22:08,980 --> 00:22:10,319 ¿y siguen juntos a todo esto? 511 00:22:11,380 --> 00:22:12,480 oye, porque es que 512 00:22:12,480 --> 00:22:15,480 no, porque una cosa tan rápida 513 00:22:15,480 --> 00:22:17,380 Y yo le diría, joder, se precipitaron, pero mira, ¿no? 514 00:22:17,380 --> 00:22:18,279 No se precipitaron 515 00:22:18,279 --> 00:22:21,519 Su amor es verdadero 516 00:22:21,519 --> 00:22:27,400 Y en un garito, además 517 00:22:27,400 --> 00:22:29,819 O sea, todas las papeletas para que fuera un desastre 518 00:22:29,819 --> 00:22:38,720 Nada, una historia muy bonita, hombre 519 00:22:38,720 --> 00:22:41,059 Di que sí 520 00:22:41,059 --> 00:22:44,700 Bueno, pues entonces 521 00:22:45,480 --> 00:22:47,519 como nosotros no queremos 522 00:22:47,519 --> 00:22:48,799 todo esto venía a cuento 523 00:22:48,799 --> 00:22:51,339 queremos pasar nuestro JSON con datos 524 00:22:51,339 --> 00:22:53,400 en la URL, no, aunque antes de que 525 00:22:53,400 --> 00:22:55,380 naciera Pablo lo hicieran, pero nosotros ya 526 00:22:55,380 --> 00:22:57,440 no lo hacemos, entonces queremos que la 527 00:22:57,440 --> 00:22:59,359 petición sea post, vale 528 00:22:59,359 --> 00:23:00,740 pues vamos a hacernos un método 529 00:23:00,740 --> 00:23:03,079 pero no anotado con 530 00:23:03,079 --> 00:23:05,099 con get 531 00:23:05,099 --> 00:23:07,299 sino con post, vale 532 00:23:07,299 --> 00:23:09,140 anotado con get sino con post 533 00:23:09,140 --> 00:23:10,460 entonces 534 00:23:10,460 --> 00:23:15,180 donde queremos que cuelgue 535 00:23:15,180 --> 00:23:16,539 si yo no le pongo aquí nada 536 00:23:16,539 --> 00:23:19,039 cada vez que llega una 537 00:23:19,039 --> 00:23:20,000 petición post 538 00:23:20,000 --> 00:23:22,920 con esta url 539 00:23:22,920 --> 00:23:25,099 siendo post, va a buscar en el 540 00:23:25,099 --> 00:23:27,359 request, en el body, el json 541 00:23:27,359 --> 00:23:28,539 lo va a insertar y ya está 542 00:23:28,539 --> 00:23:30,259 entonces lo puedo dejar así, pero bueno 543 00:23:30,259 --> 00:23:33,180 como puede que haya más post de modifica 544 00:23:33,180 --> 00:23:35,099 de no se que, pues vamos a hacerle 545 00:23:35,099 --> 00:23:36,420 aquí, venga, cuando 546 00:23:36,420 --> 00:23:38,900 yo te haga un insert 547 00:23:38,900 --> 00:23:40,259 vale, por ejemplo 548 00:23:40,259 --> 00:23:41,900 vale, a ver 549 00:23:41,900 --> 00:23:44,940 entonces, este 550 00:23:44,940 --> 00:24:02,319 método le damos un hombrecito público vale no que nos devuelva el alumno 551 00:24:02,319 --> 00:24:08,700 insertado pues para ver por ejemplo su idea y todo eso no esto es lo inserta y 552 00:24:08,700 --> 00:24:10,799 no lo da de vuelta, tú lo puedes ignorar si quieres 553 00:24:10,799 --> 00:24:12,359 vale, lo puedes ignorar 554 00:24:12,359 --> 00:24:13,680 y ahora 555 00:24:13,680 --> 00:24:15,339 pues este 556 00:24:15,339 --> 00:24:18,980 pues para ver 557 00:24:18,980 --> 00:24:20,559 el ID autogenerado, por ejemplo 558 00:24:20,559 --> 00:24:23,220 porque a la hora de hacer la persistencia 559 00:24:23,220 --> 00:24:24,420 tú el ID no se lo puedes pasar 560 00:24:24,420 --> 00:24:25,440 pero genera él 561 00:24:25,440 --> 00:24:28,640 insert y ahora 562 00:24:28,640 --> 00:24:30,619 aquí hay que decirle 563 00:24:30,619 --> 00:24:31,220 oye tú 564 00:24:31,220 --> 00:24:34,359 lo que 565 00:24:34,359 --> 00:24:37,119 tienes que coger, cógelo 566 00:24:37,119 --> 00:24:37,559 del 567 00:24:37,559 --> 00:24:44,720 Cógelo del body 568 00:24:44,720 --> 00:24:48,339 ¿Vale? 569 00:24:48,799 --> 00:24:51,180 Del body tienes que coger el parámetro 570 00:24:51,180 --> 00:24:52,460 El dato, ¿vale? 571 00:24:52,640 --> 00:24:53,339 Del body 572 00:24:53,339 --> 00:24:56,480 Y lo tienes que mapear a un DTO 573 00:24:56,480 --> 00:24:58,180 ¿Vale? 574 00:24:58,279 --> 00:25:00,480 ¿Nos vale el DTO de antes? 575 00:25:01,460 --> 00:25:02,220 Bueno, nos vale 576 00:25:02,220 --> 00:25:04,279 Porque el DTO de antes tiene un campo id 577 00:25:04,279 --> 00:25:06,480 Y nosotros cuando le pasemos un alumno 578 00:25:06,480 --> 00:25:07,440 Le vamos a pasar el id 579 00:25:07,440 --> 00:25:10,140 le pasamos el nombre y el email 580 00:25:10,140 --> 00:25:12,319 lo queremos hacer pasándole matrículas 581 00:25:12,319 --> 00:25:13,619 también, bueno, pues ni siquiera 582 00:25:13,619 --> 00:25:15,480 podríamos construirlo con las matrículas 583 00:25:15,480 --> 00:25:17,700 un JSON con todas las matrículas y pasárselo 584 00:25:17,700 --> 00:25:19,960 pero no vamos a hacer un JSON más sencillo 585 00:25:19,960 --> 00:25:22,099 pero lo que sí que le vamos a pasar 586 00:25:22,099 --> 00:25:24,140 es el ID, entonces este DTO 587 00:25:24,140 --> 00:25:25,240 no nos vale 588 00:25:25,240 --> 00:25:30,099 porque, claro, porque esto es para 589 00:25:30,099 --> 00:25:32,099 insertar, entonces el ID lo va a generar 590 00:25:32,099 --> 00:25:33,980 solo la base de datos, tú insertas 591 00:25:33,980 --> 00:25:35,799 un alumno con nombre e email, entonces 592 00:25:35,799 --> 00:25:37,900 le tenemos que pasar un objeto que no tenga 593 00:25:37,900 --> 00:25:39,819 el id, entonces un alumno de teo 594 00:25:39,819 --> 00:25:41,799 no me vale y un alumno por supuesto tampoco 595 00:25:41,799 --> 00:25:44,279 pues un alumno 596 00:25:44,279 --> 00:25:45,700 inserta 597 00:25:45,700 --> 00:25:46,900 de teo 598 00:25:46,900 --> 00:25:49,799 y tan ricamente, no pasa nada, nos hacemos todos 599 00:25:49,799 --> 00:25:51,240 los de teos que sean necesarios 600 00:25:51,240 --> 00:25:52,500 si para eso estamos 601 00:25:52,500 --> 00:25:53,740 en la clase alumno 602 00:25:53,740 --> 00:25:56,859 el constructor tiene que tener 603 00:25:56,859 --> 00:25:58,180 como para un id 604 00:25:58,180 --> 00:26:02,019 en la clase alumno a secas 605 00:26:02,019 --> 00:26:06,420 si 606 00:26:06,420 --> 00:26:08,559 a ver 607 00:26:08,559 --> 00:26:11,339 Que quería hacer aquí 608 00:26:11,339 --> 00:26:12,119 A parar esto 609 00:26:12,119 --> 00:26:14,480 Juro que nos da tiempo 610 00:26:14,480 --> 00:26:15,920 Os lo prometo 611 00:26:15,920 --> 00:26:18,799 ¿Tenéis arrancado el postman incluso? 612 00:26:19,039 --> 00:26:20,039 Nos da tiempo 613 00:26:20,039 --> 00:26:21,299 Vale, es que 614 00:26:21,299 --> 00:26:26,279 A ver, que no nos podemos ir así 615 00:26:26,279 --> 00:26:28,859 ¿Eh? 616 00:26:28,859 --> 00:26:28,900 ¿Eh? 617 00:26:32,519 --> 00:26:33,940 ¿Cómo hacer ojo en cinco? 618 00:26:35,119 --> 00:26:36,279 Vale, entonces 619 00:26:36,279 --> 00:26:40,460 A ver, es cierto que nos falta 620 00:26:40,460 --> 00:26:42,680 Hacer el alumno inserta DTO 621 00:26:42,680 --> 00:26:45,799 Nos falta hacer el método de servicio 622 00:26:45,799 --> 00:26:47,200 Que se hacen dos patadas 623 00:26:47,200 --> 00:26:51,380 Ah, bueno, sí, sí, perdón 624 00:26:51,380 --> 00:26:53,160 Nos falta el nombre de la variable 625 00:26:53,160 --> 00:26:55,079 Que es DTO 626 00:26:55,079 --> 00:26:56,480 ¿Vale? 627 00:26:56,480 --> 00:26:58,660 Nos falta hacer el método de servicio 628 00:26:58,660 --> 00:26:59,720 ¿Vale? 629 00:27:04,920 --> 00:27:06,660 Entonces, aquí 630 00:27:06,660 --> 00:27:10,839 Bueno, vamos a hacer hasta donde nos dé tiempo 631 00:27:10,839 --> 00:27:12,599 Entonces vamos a hacer nuestro DTO 632 00:27:12,599 --> 00:27:13,779 Alumno inserta DTO 633 00:27:13,779 --> 00:27:15,799 Que es que me estoy angustiando 634 00:27:15,799 --> 00:27:17,039 Por vuestra culpa todo 635 00:27:17,039 --> 00:27:18,140 A ver 636 00:27:18,140 --> 00:27:26,059 Alumno inserta DTO 637 00:27:26,059 --> 00:27:26,539 Vale 638 00:27:26,539 --> 00:27:28,680 El alumno inserta DTO 639 00:27:28,680 --> 00:27:30,960 Solo queremos que tenga 640 00:27:30,960 --> 00:27:33,000 Un 641 00:27:33,000 --> 00:27:36,059 Nombre 642 00:27:36,059 --> 00:27:42,910 Y un email 643 00:27:42,910 --> 00:27:44,589 Ala, tan bonito 644 00:27:44,589 --> 00:27:46,730 Ya está, el DTO 645 00:27:46,730 --> 00:27:48,529 Finiquitado 646 00:27:48,529 --> 00:27:49,970 Vale 647 00:27:49,970 --> 00:27:52,990 No, no, no, no 648 00:27:52,990 --> 00:27:54,829 Porque yo creo que el alumno que me devuelva 649 00:27:54,829 --> 00:27:57,150 Sea con el campo ID 650 00:27:57,150 --> 00:27:59,069 Vale, entonces alumno DTO 651 00:27:59,069 --> 00:27:59,670 Si tiene el ID 652 00:27:59,670 --> 00:28:03,150 Vale, entonces alumno inserta 653 00:28:03,150 --> 00:28:04,430 DTO, ya lo tengo 654 00:28:04,430 --> 00:28:06,809 Vale, entonces, ahora 655 00:28:06,809 --> 00:28:09,230 ¿Qué me tiene que devolver esto? 656 00:28:09,230 --> 00:28:10,690 Pues el método de servicio 657 00:28:10,690 --> 00:28:11,910 Ahora vamos a hacer 658 00:28:11,910 --> 00:28:14,490 El método de servicio que nos falta por hacer 659 00:28:14,490 --> 00:28:16,269 Create 660 00:28:16,269 --> 00:28:16,910 Créame 661 00:28:16,910 --> 00:28:19,109 A 662 00:28:19,109 --> 00:28:21,910 Este 663 00:28:21,910 --> 00:28:24,430 Este método de servicio 664 00:28:24,430 --> 00:28:25,470 Lo tenemos que hacer ahora 665 00:28:25,470 --> 00:28:28,190 Este es el método de servicio 666 00:28:28,190 --> 00:28:30,369 Que yo le paso este DTO 667 00:28:30,369 --> 00:28:31,950 Y me hace el save 668 00:28:31,950 --> 00:28:33,609 Del repositorio 669 00:28:33,609 --> 00:28:35,329 Entonces 670 00:28:35,329 --> 00:28:38,529 Y me tiene que volver un DTO construido 671 00:28:38,529 --> 00:29:04,390 a partir de esto. Entonces, venga, alumno service, ¿dónde está? Pues alumno service, public, alumno de teo, create, le paso un alumno inserta, inserta de teo, de teo, vale. 672 00:29:04,390 --> 00:29:20,490 Entonces, ¿qué tiene que hacer este? Pues este, lo que tiene que hacer es construir un alumno con estos datos y hacerle el save, ¿vale? No, un alumno normal, porque este llama al repositorio. 673 00:29:20,490 --> 00:29:21,849 alumno a 674 00:29:21,849 --> 00:29:23,509 igual 675 00:29:23,509 --> 00:29:26,849 a new alumno 676 00:29:26,849 --> 00:29:27,650 y ahora 677 00:29:27,650 --> 00:29:30,150 a.setEmail 678 00:29:30,150 --> 00:29:31,750 dto. 679 00:29:33,029 --> 00:29:34,089 dto. 680 00:29:40,529 --> 00:29:42,210 Debería estar el get 681 00:29:42,210 --> 00:29:44,049 dto. 682 00:29:44,190 --> 00:29:45,990 No, no es el momento de que nos pasen cosas. 683 00:29:50,029 --> 00:29:51,450 Sí, a mí me llevan pasando eso. 684 00:29:51,930 --> 00:29:56,609 Ah, perdón 685 00:29:56,609 --> 00:30:02,529 Tienes toda la razón 686 00:30:02,529 --> 00:30:03,289 Vale 687 00:30:03,289 --> 00:30:05,269 A ver, ¿qué me estoy poniendo a poner? 688 00:30:06,430 --> 00:30:06,950 Sed 689 00:30:06,950 --> 00:30:08,589 Fatal 690 00:30:08,589 --> 00:30:10,930 Me siento fatal 691 00:30:10,930 --> 00:30:15,490 Vale, entonces 692 00:30:15,490 --> 00:30:18,970 ¡Nya, ña, ña! 693 00:30:18,970 --> 00:30:22,450 pero yo no me pongo tan repelente 694 00:30:22,450 --> 00:30:25,049 repo alumno 695 00:30:25,049 --> 00:30:26,630 punto save 696 00:30:26,630 --> 00:30:27,930 vale 697 00:30:27,930 --> 00:30:29,890 save 698 00:30:29,890 --> 00:30:31,069 ea 699 00:30:31,069 --> 00:30:34,470 y ahora, para construir el DTO 700 00:30:34,470 --> 00:30:35,890 necesitamos el id 701 00:30:35,890 --> 00:30:38,390 que no lo sabemos, pero es que este save 702 00:30:38,390 --> 00:30:40,029 del repositorio es tan listo 703 00:30:40,029 --> 00:30:42,549 que nos devuelve el objeto persistente 704 00:30:42,549 --> 00:30:44,230 pues vamos 705 00:30:44,230 --> 00:30:46,289 a guardarlo aquí 706 00:30:46,289 --> 00:30:47,250 el persistido 707 00:30:47,250 --> 00:30:49,089 El persistido 708 00:30:49,089 --> 00:30:50,609 Y ahora yo ya me hago un DTO 709 00:30:50,609 --> 00:30:51,990 Que es el que devuelvo 710 00:30:51,990 --> 00:30:53,549 Pues me hago 711 00:30:53,549 --> 00:30:55,230 Un 712 00:30:55,230 --> 00:31:00,430 Alumno DTO 713 00:31:00,430 --> 00:31:02,609 Que tenga 714 00:31:02,609 --> 00:31:04,349 Que tenga 715 00:31:04,349 --> 00:31:07,509 Upper.get 716 00:31:07,509 --> 00:31:08,390 Id 717 00:31:08,390 --> 00:31:10,329 Coma 718 00:31:10,329 --> 00:31:13,450 Upper.get 719 00:31:13,450 --> 00:31:14,589 Nombre 720 00:31:14,589 --> 00:31:19,769 alumnopersistente.get 721 00:31:19,769 --> 00:31:21,130 email 722 00:31:21,130 --> 00:31:24,130 y alumno.get 723 00:31:24,130 --> 00:31:26,170 matrículas, que será vacío 724 00:31:26,170 --> 00:31:27,809 pero bueno, como el constructor 725 00:31:27,809 --> 00:31:29,390 del DTO lo pide 726 00:31:29,390 --> 00:31:32,640 return new 727 00:31:32,640 --> 00:31:38,759 el del DTO 728 00:31:38,759 --> 00:31:40,880 alumno sí, pero era matrícula de DTO 729 00:31:40,880 --> 00:31:42,759 entonces tendría 730 00:31:42,759 --> 00:31:44,839 que pasar las matrículas 731 00:31:44,839 --> 00:31:46,220 a DTO 732 00:31:46,220 --> 00:31:47,720 Pero 733 00:31:47,720 --> 00:31:50,920 Sí, haciéndolo otro 734 00:31:50,920 --> 00:31:52,740 Esto de aquí, efectivamente 735 00:31:52,740 --> 00:31:53,579 Esto de aquí 736 00:31:53,579 --> 00:31:57,519 Qué rápidos sois 737 00:31:57,519 --> 00:32:01,779 Vale, entonces me hago esto de aquí 738 00:32:01,779 --> 00:32:03,240 Y le paso más 739 00:32:03,240 --> 00:32:09,599 Vale 740 00:32:09,599 --> 00:32:14,500 Y esto sería de 741 00:32:14,500 --> 00:32:15,880 Aper, muy bien 742 00:32:15,880 --> 00:32:18,259 Aunque bueno, va a estar vacía la lista, pero bueno 743 00:32:18,259 --> 00:32:21,480 a perder matrículas, bla, bla, bla 744 00:32:21,480 --> 00:32:23,940 y lo demás está bien, ¿no? 745 00:32:24,359 --> 00:32:24,759 vale 746 00:32:24,759 --> 00:32:27,039 venga, pues entonces 747 00:32:27,039 --> 00:32:29,680 ya tengo el método de servicio 748 00:32:29,680 --> 00:32:31,000 completamente hecho 749 00:32:31,000 --> 00:32:33,220 que le paso el alumno inserta DTO 750 00:32:33,220 --> 00:32:34,099 y me devuelve el alumno DTO 751 00:32:34,099 --> 00:32:35,920 ahora, el controller 752 00:32:35,920 --> 00:32:39,319 el controller, la respuesta de inserta 753 00:32:39,319 --> 00:32:40,660 si yo soy capaz 754 00:32:40,660 --> 00:32:42,440 de pasarle en el body 755 00:32:42,440 --> 00:32:44,440 un alumno inserta DTO 756 00:32:44,440 --> 00:32:46,140 me lo insertará 757 00:32:46,140 --> 00:32:48,480 y me lo devuelve 758 00:32:48,480 --> 00:32:50,799 con su ID y con todo si yo quiero manejarlo 759 00:32:50,799 --> 00:32:52,019 vale, pues ahora 760 00:32:52,019 --> 00:32:54,880 esto ya es lo último 761 00:32:54,880 --> 00:32:55,519 que nos falta 762 00:32:55,519 --> 00:32:58,240 no sé cuál es tu pregunta 763 00:32:58,240 --> 00:33:00,900 ¿por qué no se va a pasar bien? 764 00:33:03,200 --> 00:33:04,440 se pasa muy bien 765 00:33:04,440 --> 00:33:05,940 se pasa estupendo 766 00:33:05,940 --> 00:33:08,039 vale, ahora, ¿cómo paso yo 767 00:33:08,039 --> 00:33:10,220 cómo hago yo una petición post 768 00:33:10,220 --> 00:33:11,259 con un JSON en el body? 769 00:33:11,640 --> 00:33:14,240 pues hombre, desde el navegador casi que no 770 00:33:14,240 --> 00:33:15,880 postman 771 00:33:15,880 --> 00:33:32,339 Pues ahora es cuando arrancáis Postman, que es un cliente para hacer peticiones GET y POST a un navegador de forma muy simple, ¿vale? Entonces, arrancamos Postman, vemos a ver si funciona y solucionamos. 772 00:33:32,339 --> 00:33:37,299 claro, pues con Postman 773 00:33:37,299 --> 00:33:39,619 que es el cliente 774 00:33:39,619 --> 00:33:41,160 típico para hacer pruebas 775 00:33:41,160 --> 00:33:42,019 de los API REST 776 00:33:42,019 --> 00:33:43,619 vale 777 00:33:43,619 --> 00:33:45,980 entonces 778 00:33:45,980 --> 00:33:49,039 fijaos en Postman, en Postman tú le dices 779 00:33:49,039 --> 00:33:51,119 la ruta 780 00:33:51,119 --> 00:33:53,400 en la que está 781 00:33:53,400 --> 00:33:54,700 el API REST colgando 782 00:33:54,700 --> 00:33:56,960 si el método es POST 783 00:33:56,960 --> 00:33:59,160 o GET y aquí le pasas 784 00:33:59,160 --> 00:34:00,759 los parámetros, el cuerpo 785 00:34:00,759 --> 00:34:02,440 que es lo que nos importa aquí a nosotros 786 00:34:02,440 --> 00:34:04,759 entonces, yo, bueno, espera 787 00:34:04,759 --> 00:34:06,440 voy a relanzar esto 788 00:34:06,440 --> 00:34:08,599 voy a relanzar el este, no vaya a haberlo liado 789 00:34:08,599 --> 00:34:10,739 con lo que he hecho, y empieza a apretar 790 00:34:10,739 --> 00:34:11,179 todo 791 00:34:11,179 --> 00:34:17,059 bueno, la aplicación 792 00:34:17,059 --> 00:34:17,659 se lanzó 793 00:34:17,659 --> 00:34:20,860 la aplicación se lanzó, ahora, ¿dónde está escuchando? 794 00:34:20,960 --> 00:34:22,820 la mía está escuchando en API alumnos 795 00:34:22,820 --> 00:34:24,000 inserta 796 00:34:24,000 --> 00:34:26,260 entonces, API 797 00:34:26,260 --> 00:34:32,039 API alumnos 798 00:34:32,039 --> 00:34:34,460 inserta, aquí está 799 00:34:34,460 --> 00:34:36,219 y es post, ¿vale? 800 00:34:36,260 --> 00:34:37,539 Bueno, aquí va 801 00:34:37,539 --> 00:34:39,860 A ver 802 00:34:39,860 --> 00:34:42,579 API alumnos, inserta 803 00:34:42,579 --> 00:34:44,179 Vale, esta es mi ruta 804 00:34:44,179 --> 00:34:46,559 Del API REST, quiero que vaya por post 805 00:34:46,559 --> 00:34:48,619 Lo que me importa es el body 806 00:34:48,619 --> 00:34:50,500 El body 807 00:34:50,500 --> 00:34:52,460 Vale, el body 808 00:34:52,460 --> 00:34:54,679 Quiero que yo sea Jason, pues lo pongo aquí 809 00:34:54,679 --> 00:34:56,280 Vamos a ver 810 00:34:56,280 --> 00:35:00,019 Aquí en mi DTO 811 00:35:00,019 --> 00:35:02,079 Alumnos, inserta DTO 812 00:35:02,079 --> 00:35:04,719 Es nombre e email 813 00:35:04,719 --> 00:35:05,679 No hay anotaciones 814 00:35:05,679 --> 00:35:07,679 JSON, con lo cual 815 00:35:07,679 --> 00:35:10,000 Tiene que llamarse nombre e email 816 00:35:10,000 --> 00:35:11,599 Efectivamente 817 00:35:11,599 --> 00:35:13,440 Esto mapea a la perfección 818 00:35:13,440 --> 00:35:15,199 Esa entidad, vale 819 00:35:15,199 --> 00:35:16,940 Lo mapea a la perfección 820 00:35:16,940 --> 00:35:25,750 Ya está 821 00:35:25,750 --> 00:35:27,630 Y ahora cuando ya he puesto el cuerpo 822 00:35:27,630 --> 00:35:29,150 Yo le doy a send 823 00:35:29,150 --> 00:35:32,570 Perfecto 824 00:35:32,570 --> 00:35:34,849 Me lo inserta 825 00:35:34,849 --> 00:35:36,630 Aquí me ha devuelto el DTO 826 00:35:36,630 --> 00:35:38,349 ¿Veis? El DTO 827 00:35:38,349 --> 00:35:40,469 matrículas vacías como era de esperar 828 00:35:40,469 --> 00:35:42,349 el ID, el 5 829 00:35:42,349 --> 00:35:44,909 si lo voy a 830 00:35:44,909 --> 00:35:46,710 verificar en la base de datos, lógicamente 831 00:35:46,710 --> 00:35:48,230 que me ha insertado el alumno 832 00:35:48,230 --> 00:35:50,909 y aquí tengo mi alumno 833 00:35:50,909 --> 00:35:54,710 ¿vale? pues magnífico 834 00:35:54,710 --> 00:35:57,050 pues ya está, con esto 835 00:35:57,050 --> 00:35:58,250 podéis hacer 836 00:35:58,250 --> 00:36:00,829 cualquier cosa, cualquier microservicio 837 00:36:00,829 --> 00:36:02,849 API REST con Spring Boot, ya está 838 00:36:02,849 --> 00:36:04,570 no hay que saber más 839 00:36:04,570 --> 00:36:06,929 a ver, ¿qué más 840 00:36:06,929 --> 00:36:07,989 cosas luego hay? 841 00:36:08,349 --> 00:36:09,610 ¿Qué cosas me he saltado? 842 00:36:11,329 --> 00:36:11,769 Validaciones. 843 00:36:12,489 --> 00:36:13,710 La parte de Spring de validación. 844 00:36:13,869 --> 00:36:15,630 Spring Security, por supuesto. 845 00:36:16,429 --> 00:36:17,769 Pues hay un montón de módulos. 846 00:36:18,670 --> 00:36:20,369 Spring Security, Spring Validation, 847 00:36:20,489 --> 00:36:21,010 Spring no sé qué. 848 00:36:21,690 --> 00:36:23,510 Vale, pero esto es el... 849 00:36:23,510 --> 00:36:25,110 Spring ya te regula la seguridad 850 00:36:25,110 --> 00:36:27,210 de los títulos que hacías antes de las inserciones 851 00:36:27,210 --> 00:36:30,650 de SQL dentro de la URL. 852 00:36:31,530 --> 00:36:32,670 La gente hacía inserciones 853 00:36:32,670 --> 00:36:34,130 de URL para... 854 00:36:34,130 --> 00:36:36,969 No, claro, es que aquí inyección no puedes hacer 855 00:36:36,969 --> 00:36:40,130 Porque aquí los campos no van por 856 00:36:40,130 --> 00:36:42,309 O sea, tú puedes meter un campo 857 00:36:42,309 --> 00:36:44,210 Que va a ir al final al repositorio 858 00:36:44,210 --> 00:36:45,170 Desde la url 859 00:36:45,170 --> 00:36:47,230 Pero ese no va a ir concatenado 860 00:36:47,230 --> 00:36:49,389 Claro, la bjbc de debajo no 861 00:36:49,389 --> 00:36:51,329 O sea, inyecciones SQL 862 00:36:51,329 --> 00:36:53,809 No se puede hacer, no hace falta que pongas Spring Security 863 00:36:53,809 --> 00:36:54,389 No hace falta 864 00:36:54,389 --> 00:36:58,309 Bueno, pues habéis visto que bonito y que bien todo 865 00:36:58,309 --> 00:36:59,969 Eh...