1 00:00:02,540 --> 00:00:04,660 Bueno pues ahora ya lo tenemos creado 2 00:00:04,660 --> 00:00:06,059 Con las dos dependencias 3 00:00:06,059 --> 00:00:08,220 MongoDB y SpringWeb 4 00:00:08,220 --> 00:00:09,740 Que eso no se ha grabado pero no pasa nada 5 00:00:09,740 --> 00:00:11,080 Se ha grabado en vuestros cerebros 6 00:00:11,080 --> 00:00:12,880 Y 7 00:00:12,880 --> 00:00:16,280 Y fijaos 8 00:00:16,280 --> 00:00:18,859 Solo con esas dos 9 00:00:18,859 --> 00:00:20,440 La leche 10 00:00:20,440 --> 00:00:23,679 Todo esto 11 00:00:23,679 --> 00:00:26,899 Trae muchas cosas verdad 12 00:00:26,899 --> 00:00:29,899 Y eso que no le hemos puesto 13 00:00:29,899 --> 00:00:31,559 Ni validación ni nada 14 00:00:31,559 --> 00:00:32,299 Vale 15 00:00:32,299 --> 00:00:34,100 Vale 16 00:00:34,100 --> 00:00:37,560 Nos crea el main 17 00:00:37,560 --> 00:00:39,140 Para arrancar la aplicación 18 00:00:39,140 --> 00:00:41,479 Y no nos crea nada más 19 00:00:41,479 --> 00:00:42,640 Entonces 20 00:00:42,640 --> 00:00:45,700 Nos ofrece un primer 21 00:00:45,700 --> 00:00:47,200 Fichero de configuración 22 00:00:47,200 --> 00:00:49,100 Que es este, donde podemos meter ya 23 00:00:49,100 --> 00:00:51,700 Los datos que necesita 24 00:00:51,700 --> 00:00:53,420 Spring, que es la base de datos 25 00:00:53,420 --> 00:00:55,600 Aquí lo podríamos 26 00:00:55,600 --> 00:00:57,740 Hacer en un properties, Spring, MongoDB 27 00:00:57,740 --> 00:00:58,259 No se que 28 00:00:58,259 --> 00:01:01,259 Pero como también hay otros formatos 29 00:01:01,259 --> 00:01:02,579 De archivos de configuración 30 00:01:02,579 --> 00:01:04,500 Que son los ya ml 31 00:01:04,500 --> 00:01:06,799 Y con extensión yml 32 00:01:06,799 --> 00:01:08,640 Pues vamos a hacer uno de esos 33 00:01:08,640 --> 00:01:10,000 ¿Vale? Entonces 34 00:01:10,000 --> 00:01:13,180 A este le vamos a quitar directamente 35 00:01:13,180 --> 00:01:14,079 Delete 36 00:01:14,079 --> 00:01:16,980 Y vamos a hacernos 37 00:01:16,980 --> 00:01:18,879 Un fichero de configuración con el otro formato 38 00:01:18,879 --> 00:01:21,060 Pues por variar, porque estamos ya aburridos 39 00:01:21,060 --> 00:01:22,060 De lo mismo todo el rato 40 00:01:22,060 --> 00:01:24,579 Y porque se usa bastante 41 00:01:24,579 --> 00:01:25,579 Sobre todo 42 00:01:25,579 --> 00:01:29,420 Nuevo file 43 00:01:29,420 --> 00:01:36,439 Aplication.yml 44 00:01:36,439 --> 00:01:40,609 YML 45 00:01:40,609 --> 00:01:43,599 A ver 46 00:01:43,599 --> 00:01:45,359 Uy, ¿de dónde vienen las siglas? 47 00:01:46,560 --> 00:01:47,799 Eso no me acuerdo 48 00:01:47,799 --> 00:01:51,340 ¿De dónde vienen las siglas? 49 00:01:52,959 --> 00:01:53,719 YML 50 00:01:53,719 --> 00:01:56,519 YML 51 00:01:56,519 --> 00:01:57,519 O YML 52 00:01:57,519 --> 00:02:09,849 YAM no es un lenguaje de marcado 53 00:02:09,849 --> 00:02:10,509 Vale 54 00:02:10,509 --> 00:02:11,669 De ahí viene 55 00:02:11,669 --> 00:02:13,150 Alguna vez lo supe 56 00:02:13,150 --> 00:02:14,110 Pero se me había olvidado completamente 57 00:02:14,110 --> 00:02:16,270 Porque ya no tenemos edad de retener 58 00:02:16,270 --> 00:02:17,469 Vale 59 00:02:17,469 --> 00:02:19,870 Vale 60 00:02:19,870 --> 00:02:22,669 Bueno, pues entonces, ¿por qué quería buscar yo esto? 61 00:02:25,310 --> 00:02:26,229 Sí, pero esto es así 62 00:02:26,229 --> 00:02:28,870 Vale, las extensiones normalmente 63 00:02:28,870 --> 00:02:31,210 Se asume como estándar que sean tres caracteres 64 00:02:31,210 --> 00:02:32,889 Vale, entonces 65 00:02:32,889 --> 00:02:35,310 ¿Por qué buscaba yo esto? 66 00:02:35,909 --> 00:02:37,389 Lo buscaba precisamente 67 00:02:37,389 --> 00:02:38,590 Para 68 00:02:38,590 --> 00:02:40,550 Ponerte manifiesto 69 00:02:40,550 --> 00:02:42,669 Que esto no es un lenguaje de marcado 70 00:02:42,669 --> 00:02:44,009 Con lo cual aquí no hay marcas 71 00:02:44,009 --> 00:02:47,129 Aquí lo que hay es tabulaciones 72 00:02:47,129 --> 00:02:50,069 Y las tabulaciones 73 00:02:50,069 --> 00:02:51,710 O las respetas 74 00:02:51,710 --> 00:02:53,289 O las cagados 75 00:02:53,289 --> 00:02:55,550 Como el puñetero Python 76 00:02:55,550 --> 00:02:58,069 Que no sé quién ahí se inventó ese lenguaje absurdo 77 00:02:58,069 --> 00:03:03,430 Es muy feo 78 00:03:03,430 --> 00:03:08,250 No es para desarrolladores 79 00:03:12,669 --> 00:03:13,590 Lo que pasa es que 80 00:03:13,590 --> 00:03:15,990 Ay, pero para aprender está muy bien porque es muy facilito 81 00:03:15,990 --> 00:03:18,409 Sí, vale, es muy facilito 82 00:03:18,409 --> 00:03:19,810 Porque es todo como muy intuitivo 83 00:03:19,810 --> 00:03:21,770 Pero el aprendizaje 84 00:03:21,770 --> 00:03:23,229 Está ya muy viciado 85 00:03:23,229 --> 00:03:26,030 Aprender con Python ya aprendes con muchos vicios 86 00:03:26,030 --> 00:03:27,030 Entonces 87 00:03:27,030 --> 00:03:29,969 Claro, entonces, bueno 88 00:03:29,969 --> 00:03:31,110 Pues esto es igual 89 00:03:31,110 --> 00:03:33,669 O respetas los tabuladores o las cagaos 90 00:03:33,669 --> 00:03:36,370 Entonces, vamos a configurar lo básico 91 00:03:36,370 --> 00:03:37,689 Lo básico 92 00:03:37,689 --> 00:03:39,150 Entonces tengo yo aquí mi chuleta 93 00:03:39,150 --> 00:03:40,689 Uy 94 00:03:40,689 --> 00:03:43,530 Vale 95 00:03:43,530 --> 00:04:11,310 Lo básico sería, venga, de sprint, su tabulación de MongoDB, ¿qué propiedad quiero? URI, vale, pues esto sería lo básico, con esto ya no necesitamos más, con esto de aquí, vale, aquí la URL de MongoDB y ya está, con esto ya nos va a tirar, no necesitamos más, vale. 96 00:04:11,310 --> 00:04:16,050 Claro, una tabulación cada vez que te metes en algo dentro 97 00:04:16,050 --> 00:04:24,529 Yo creo que es la que te hace 98 00:04:24,529 --> 00:04:28,750 No, yo creo que es la que te hace 99 00:04:28,750 --> 00:04:33,410 Bueno, a mí no me hace ninguna 100 00:04:33,410 --> 00:04:34,110 Pero 101 00:04:34,110 --> 00:04:37,899 Bueno, pues 102 00:04:37,899 --> 00:04:40,500 Son dos 103 00:04:40,500 --> 00:04:50,339 Bueno, pues esto es lo feo 104 00:04:50,339 --> 00:04:51,959 De los lenguajes que no son de marcado 105 00:04:51,959 --> 00:04:55,180 Que no sabes ya muy bien 106 00:04:55,180 --> 00:04:56,899 Si estás tabulando correctamente 107 00:04:56,899 --> 00:04:59,500 En nuestro caso 108 00:04:59,500 --> 00:05:00,660 Ponemos alumnos 109 00:05:00,660 --> 00:05:03,199 Ah, bueno, sí 110 00:05:03,199 --> 00:05:07,839 La base de datos con la que tú quieras hacer las pruebas 111 00:05:07,839 --> 00:05:09,939 A ver, vamos a intentar hacerlo 112 00:05:09,939 --> 00:05:10,879 Todo homogéneo 113 00:05:10,879 --> 00:05:12,720 Ya que he dicho tareas, pones tareas 114 00:05:12,720 --> 00:05:15,279 Y ahora creáis la base de datos tareas 115 00:05:15,279 --> 00:05:16,939 Que luego cuando vamos a insertar los documentos 116 00:05:16,939 --> 00:05:17,899 No os valdrá que metáis nada 117 00:05:17,899 --> 00:05:21,540 Es decir, haced una colección 118 00:05:21,540 --> 00:05:23,439 Que se llame tareas, limpia y ya está 119 00:05:23,439 --> 00:05:25,199 Esto no es como crear una base de datos 120 00:05:25,199 --> 00:05:27,480 Que uno tiene que hacerla hasta hablar los campos 121 00:05:27,480 --> 00:05:29,620 Colección tareas, limpia y ya está 122 00:05:29,620 --> 00:05:31,420 Ya le iremos insertando documentos 123 00:05:31,420 --> 00:05:33,740 Y así vamos todos iguales 124 00:05:33,740 --> 00:05:34,899 Por si nos perdemos 125 00:05:34,899 --> 00:05:37,279 Bueno, pues en principio 126 00:05:37,279 --> 00:05:38,660 Ya estaría todo 127 00:05:38,660 --> 00:05:41,100 Porque esto lo vamos a poner después cuando nos lo pide el cuerpo 128 00:05:41,100 --> 00:05:42,199 Que todavía no nos lo pide 129 00:05:42,199 --> 00:05:44,819 ¿Vale? Para que nos queden bonitas las cosas 130 00:05:44,819 --> 00:05:46,040 ¡Hala! 131 00:05:47,519 --> 00:05:48,680 Ahora, una vez que ya tenemos 132 00:05:48,680 --> 00:05:49,680 La base de datos 133 00:05:49,680 --> 00:05:53,000 Bueno, yo es que en la mía 134 00:05:53,000 --> 00:05:55,319 Como el proyecto no me habéis cambiado 135 00:05:55,319 --> 00:05:56,100 Y he llamado tareas 136 00:05:56,100 --> 00:05:57,279 Pues, ¿vale? 137 00:05:59,100 --> 00:06:00,680 Poned la que queráis, pero 138 00:06:00,680 --> 00:06:02,720 ¿Queréis alumnos? Pues venga, alumnos 139 00:06:02,720 --> 00:06:04,720 Pero entonces, me tenéis que decir que modelo 140 00:06:04,720 --> 00:06:06,839 Alumnos, o sea, que es que yo no quiero 141 00:06:06,839 --> 00:06:08,800 Usar mi colección alumnos, porque esa colección 142 00:06:08,800 --> 00:06:09,839 Ya está llena de mierdas 143 00:06:09,839 --> 00:06:12,879 Pero es que al proyecto le he llamado tareas 144 00:06:12,879 --> 00:06:14,660 Pues no me liéis, poned la que queráis 145 00:06:14,660 --> 00:06:16,699 Tareas 146 00:06:16,699 --> 00:06:17,920 Todo el mundo, hala, ya está 147 00:06:17,920 --> 00:06:20,620 Que si no, quiero cambiar de nombre al proyecto 148 00:06:20,620 --> 00:06:23,120 Venga, lo único es que 149 00:06:23,120 --> 00:06:24,980 Cuando luego ya lo ejecutemos 150 00:06:24,980 --> 00:06:26,180 Aseguraos de que tenéis 151 00:06:26,180 --> 00:06:28,259 Una base de datos que se llama tareas 152 00:06:28,259 --> 00:06:29,959 Ya está, una base de datos que se llama tareas 153 00:06:29,959 --> 00:06:31,459 Con una colección 154 00:06:31,459 --> 00:06:35,319 No, hombre, creáis una nueva 155 00:06:35,319 --> 00:06:37,120 Si es que es darle al más y poner tareas 156 00:06:37,120 --> 00:06:38,560 Ya está, no tenéis que hacer nada más 157 00:06:38,560 --> 00:06:40,540 Darle al más y ponerlo 158 00:06:40,540 --> 00:06:41,620 Que yo tengo aquí una 159 00:06:41,620 --> 00:06:42,839 Esta 160 00:06:42,839 --> 00:06:45,740 Tareas 161 00:06:45,740 --> 00:06:48,759 Por ejemplo 162 00:06:48,759 --> 00:06:50,720 Vale, pues entonces 163 00:06:50,720 --> 00:06:51,939 ¿Qué es lo siguiente que hacemos? 164 00:06:52,139 --> 00:06:53,579 Después de 165 00:06:53,579 --> 00:06:55,899 Fijar la configuración 166 00:06:55,899 --> 00:06:57,779 Muy bien 167 00:06:57,779 --> 00:07:00,100 Nuestro modelo de clases 168 00:07:00,100 --> 00:07:01,939 Vale, pues venga 169 00:07:01,939 --> 00:07:05,850 Nos hacemos nuestro paquetillo 170 00:07:05,850 --> 00:07:15,579 Cuidado con 171 00:07:15,579 --> 00:07:17,779 Respetar la raíz del empaquetado 172 00:07:17,779 --> 00:07:19,339 Porque ya sabéis que es print boot 173 00:07:19,339 --> 00:07:21,139 Si no se va a volver loco 174 00:07:21,139 --> 00:07:22,759 Para buscar nuestros bins 175 00:07:22,759 --> 00:07:25,040 Vale 176 00:07:25,040 --> 00:07:26,139 Pues venga 177 00:07:26,139 --> 00:07:36,139 Nuestra aplicación va a tener tareas 178 00:07:36,139 --> 00:07:38,259 Eso va a tener nuestra aplicación 179 00:07:38,259 --> 00:07:40,019 Tareas 180 00:07:40,019 --> 00:07:40,439 Vale 181 00:07:40,439 --> 00:07:43,699 Luego esto sería 182 00:07:43,699 --> 00:07:45,420 Lo que en JPA 183 00:07:45,420 --> 00:07:48,639 Pondríamos ahí, que anotación pondríamos en JPA 184 00:07:48,639 --> 00:07:49,899 Entity 185 00:07:49,899 --> 00:07:51,939 Aquí no ponemos entity 186 00:07:51,939 --> 00:07:53,620 Sino que ponemos 187 00:07:53,620 --> 00:07:55,139 Document 188 00:07:55,139 --> 00:07:57,220 ¿Vale? 189 00:07:57,459 --> 00:08:03,110 No es tan obvio 190 00:08:03,110 --> 00:08:04,470 ¿Vale? 191 00:08:06,009 --> 00:08:10,970 Luego, cada objeto tarea 192 00:08:10,970 --> 00:08:13,269 Se va a mapear a un documento 193 00:08:13,269 --> 00:08:14,350 ¿Vale? 194 00:08:16,149 --> 00:08:16,990 Entonces 195 00:08:16,990 --> 00:08:19,490 La colección 196 00:08:19,490 --> 00:08:20,970 Podría llamarse de otra manera 197 00:08:20,970 --> 00:08:23,550 Por ejemplo, aquí en mi caso 198 00:08:23,550 --> 00:08:25,189 Se llama tareas 199 00:08:25,189 --> 00:08:27,509 Perdón, la colección 200 00:08:27,509 --> 00:08:29,949 La colección 201 00:08:29,949 --> 00:08:32,889 En mi caso se llama tareas con S 202 00:08:32,889 --> 00:08:33,629 En plural 203 00:08:33,629 --> 00:08:35,490 Tareas con S 204 00:08:35,490 --> 00:08:38,470 Entonces, aquí debería 205 00:08:38,470 --> 00:08:40,309 Cambiarle el nombre 206 00:08:40,309 --> 00:08:42,289 ¿Vale? Debería cambiarle el nombre 207 00:08:42,289 --> 00:08:48,220 Y, ¿vale? 208 00:08:53,720 --> 00:08:55,200 Ahora, los campos 209 00:08:55,200 --> 00:08:57,279 El campo clave 210 00:08:57,279 --> 00:08:57,899 Existe 211 00:08:57,899 --> 00:09:00,179 Es obligatorio 212 00:09:00,179 --> 00:09:02,799 Que es este, ¿vale? 213 00:09:02,799 --> 00:09:03,580 El campo id 214 00:09:03,580 --> 00:09:06,159 Y aquí, ¿qué va a ser? 215 00:09:06,299 --> 00:09:08,419 Pues va a ser un object id 216 00:09:08,419 --> 00:09:10,139 El campo id, ¿verdad? 217 00:09:10,440 --> 00:09:12,200 Recordáis que el campo id 218 00:09:12,200 --> 00:09:14,639 Es un tipo especial 219 00:09:14,639 --> 00:09:15,340 Que 220 00:09:15,340 --> 00:09:18,039 Que es este de aquí 221 00:09:18,039 --> 00:09:19,860 Un campo especial 222 00:09:19,860 --> 00:09:21,759 Pues sería este 223 00:09:21,759 --> 00:09:23,240 Un object id 224 00:09:23,240 --> 00:09:38,639 No hace falta que se llame id aquí 225 00:09:38,639 --> 00:09:40,240 Aquí lo podéis llamar como queráis 226 00:09:40,240 --> 00:09:41,879 Pero la anotación sí que tiene que ser id 227 00:09:41,879 --> 00:09:44,600 Lógicamente, este campo no lo manejaremos 228 00:09:44,600 --> 00:09:45,179 Desde Java 229 00:09:45,179 --> 00:09:47,759 Y ahora aquí el resto de campos 230 00:09:47,759 --> 00:09:50,759 Pues venga, ¿qué campos queremos que tenga la tarea? 231 00:09:50,960 --> 00:09:52,799 Pues la tarea va a tener un nombre 232 00:09:52,799 --> 00:09:58,279 Y va a tener una descripción 233 00:09:58,279 --> 00:10:00,700 Y va a tener 234 00:10:00,700 --> 00:10:07,000 Vamos a ponerle dos arrays, uno simple y otro complejo 235 00:10:07,000 --> 00:10:08,259 Entonces 236 00:10:08,259 --> 00:10:13,379 Va a tener un array de los miembros de la tarea 237 00:10:13,379 --> 00:10:15,919 Participantes 238 00:10:15,919 --> 00:10:23,980 Y va a tener un array de los ítems de la tarea 239 00:10:23,980 --> 00:10:44,250 Getter y setter, nos falta hacer ítem 240 00:10:44,250 --> 00:10:46,950 Podemos ir incorporando 241 00:10:46,950 --> 00:10:49,009 Constructores según vayamos necesitando 242 00:10:49,009 --> 00:10:50,210 Equals 243 00:10:50,210 --> 00:10:52,470 Hascode según vayamos necesitando 244 00:10:52,470 --> 00:10:54,049 Tu stream según vayamos necesitando 245 00:10:54,049 --> 00:10:55,309 Ahora mismo, nada 246 00:10:55,309 --> 00:10:59,559 Hay lógicamente más anotaciones 247 00:10:59,559 --> 00:11:01,419 Estas anotaciones 248 00:11:01,419 --> 00:11:04,460 Vienen de Spring Data MongoDB 249 00:11:04,460 --> 00:11:06,080 ¿Vale? Estamos trabajando 250 00:11:06,080 --> 00:11:07,960 Ya directamente con la capa de Spring Data 251 00:11:07,960 --> 00:11:08,740 Que está por encima 252 00:11:08,740 --> 00:11:11,860 Luego estas son anotaciones de Spring Data 253 00:11:11,860 --> 00:11:14,320 Que son las que va a usar el driver 254 00:11:14,320 --> 00:11:15,879 Luego para hacer el mapeo 255 00:11:15,879 --> 00:11:16,980 Hacer los fines, etc 256 00:11:16,980 --> 00:11:20,299 Es decir, lo estamos enmascarando de a todo desde el principio 257 00:11:20,299 --> 00:11:23,799 Que hay más anotaciones 258 00:11:23,799 --> 00:11:25,620 En Spring Data MongoDB hay más 259 00:11:25,620 --> 00:11:27,039 La estándar 260 00:11:27,039 --> 00:11:30,100 Una que sí que tenemos que conocer 261 00:11:30,100 --> 00:11:32,340 Si algún campo cambiara de nombre 262 00:11:32,340 --> 00:11:33,779 Pues serían 263 00:11:33,779 --> 00:11:34,480 Fill 264 00:11:34,480 --> 00:11:37,559 Lo que en Spring Data JPA era column 265 00:11:37,559 --> 00:11:39,480 Pues aquí sería fill 266 00:11:39,480 --> 00:11:43,279 Sí, que el campo column 267 00:11:43,279 --> 00:11:44,899 En Spring Data JPA 268 00:11:44,899 --> 00:11:46,919 Que sería para cambiar el nombre de un campo 269 00:11:46,919 --> 00:11:49,139 Pues ese campo aquí pasa 270 00:11:49,139 --> 00:11:50,039 ¿Vale? 271 00:11:50,600 --> 00:11:53,200 Entonces document es el entity 272 00:11:53,200 --> 00:11:54,659 Id es id 273 00:11:54,659 --> 00:11:56,600 Field es column 274 00:11:56,600 --> 00:11:58,519 ¿Y qué es lo que aquí no hay? 275 00:12:00,200 --> 00:12:01,220 One to one 276 00:12:01,220 --> 00:12:02,720 One to many, many to one 277 00:12:02,720 --> 00:12:04,220 Eso es lo que aquí no existe 278 00:12:04,220 --> 00:12:06,840 Porque aquí ya está la información metida dentro 279 00:12:06,840 --> 00:12:09,120 Aquí no hay one to many, many to one 280 00:12:09,120 --> 00:12:09,639 no hay nada 281 00:12:09,639 --> 00:12:12,340 porque 282 00:12:12,340 --> 00:12:14,259 la base de datos 283 00:12:14,259 --> 00:12:16,879 la tiene dentro exactamente igual que esta 284 00:12:16,879 --> 00:12:19,100 igual, no hay ninguna clave 285 00:12:19,100 --> 00:12:20,539 ajena que te lleve de una a otra 286 00:12:20,539 --> 00:12:22,240 entonces es mucho más fácil 287 00:12:22,240 --> 00:12:29,100 a ver si son más redundantes 288 00:12:29,100 --> 00:12:31,259 en el sentido de que si varios tienen el mismo 289 00:12:31,259 --> 00:12:33,379 trabajo, ese subdocumento 290 00:12:33,379 --> 00:12:34,340 está en todas partes 291 00:12:34,340 --> 00:12:37,100 pero claro, pesa 292 00:12:37,100 --> 00:12:38,379 tampoco almacenar eso 293 00:12:38,379 --> 00:12:40,139 que casi te compensa 294 00:12:40,139 --> 00:12:42,500 los bits son estos, pues no pesan nada en realidad 295 00:12:42,500 --> 00:12:44,220 una tabla de una base de datos 296 00:12:44,220 --> 00:12:46,600 pues tiene un montón de metadatos en realidad 297 00:12:46,600 --> 00:12:48,700 aquí metadatos no hay tantos 298 00:12:48,700 --> 00:12:52,059 vale, pues aquí si 299 00:12:52,059 --> 00:12:54,480 quisiéramos cambiar el nombre 300 00:12:54,480 --> 00:12:55,840 pues sería esto 301 00:12:55,840 --> 00:12:57,399 por ejemplo, vale 302 00:12:57,399 --> 00:13:00,080 ahora vamos a 303 00:13:00,080 --> 00:13:01,100 hacernos el ítem 304 00:13:01,100 --> 00:13:18,379 vale, pues nada, esta 305 00:13:18,379 --> 00:13:20,039 no es un document 306 00:13:20,039 --> 00:13:22,100 ni tiene id, ni tiene nada 307 00:13:22,100 --> 00:13:23,779 porque esto va dentro del otro 308 00:13:23,779 --> 00:13:26,639 Luego aquí no hay que poner ninguna anotación 309 00:13:26,639 --> 00:13:27,820 Aquí no hay que poner ninguna 310 00:13:27,820 --> 00:13:30,600 Hay que poner anotaciones solo en el documento 311 00:13:30,600 --> 00:13:31,299 Que forma parte 312 00:13:31,299 --> 00:13:33,399 Este es el sub-documento 313 00:13:33,399 --> 00:13:35,480 Los sub-documentos no tienen anotaciones, no tienen nada 314 00:13:35,480 --> 00:13:40,389 Pues nada, el ítem 315 00:13:40,389 --> 00:13:42,710 Pues es que este no necesita ni clave 316 00:13:42,710 --> 00:13:43,750 Porque es que ya está dentro 317 00:13:43,750 --> 00:13:45,129 Los sub-documentos no necesitan clave 318 00:13:45,129 --> 00:13:46,809 Los que necesitan clave son los otros 319 00:13:46,809 --> 00:13:49,129 Pues el ítem, pues nada 320 00:13:49,129 --> 00:13:53,720 Tiene su nombre 321 00:13:53,720 --> 00:14:00,399 Y 322 00:14:00,399 --> 00:14:02,460 A ver 323 00:14:02,460 --> 00:14:09,700 Pues yo que sé, si está completado o no está completado 324 00:14:09,700 --> 00:14:10,240 Por ejemplo 325 00:14:10,240 --> 00:14:15,940 Completado 326 00:14:15,940 --> 00:14:26,350 ¿Listo? 327 00:14:26,350 --> 00:14:26,409 ¿Listo? 328 00:14:31,039 --> 00:14:32,279 Podría, sí 329 00:14:32,279 --> 00:14:35,620 Vale, es un buen hábito 330 00:14:35,620 --> 00:14:43,919 Por ejemplo 331 00:14:43,919 --> 00:15:17,240 No, he puesto, pero pongo el que quieras 332 00:15:17,240 --> 00:15:18,139 He puesto ArrayList 333 00:15:18,139 --> 00:15:20,580 Por variar 334 00:15:20,580 --> 00:15:26,580 Normalmente pondría ArrayList en la colección que tenga menos 335 00:15:26,580 --> 00:15:30,820 Bueno, pues un modelo sencillo 336 00:15:30,820 --> 00:15:31,639 Podría ser este 337 00:15:31,639 --> 00:15:33,299 Y ya está 338 00:15:33,299 --> 00:15:38,129 Y ahora, lo siguiente que hacemos 339 00:15:38,129 --> 00:15:39,889 Cuando trabajamos con Spring Data 340 00:15:39,889 --> 00:15:42,250 Sea JPA, sea Spring Data 341 00:15:42,250 --> 00:15:43,409 MongoDB, sea lo que sea 342 00:15:43,409 --> 00:15:45,429 Lo siguiente ya que hacemos, una vez que tenemos el modelo 343 00:15:45,429 --> 00:15:46,649 Es 344 00:15:46,649 --> 00:15:48,250 El 345 00:15:48,250 --> 00:15:52,210 El repositorio 346 00:15:52,210 --> 00:15:53,009 ¿Vale? 347 00:15:53,610 --> 00:15:57,149 Si no trabajáramos con Sprint, lo siguiente que haríamos sería el DAO. 348 00:15:58,129 --> 00:16:02,169 Pero al trabajar con Sprint, hacemos el repositorio que ya envuelve al DAO por dentro. 349 00:16:03,450 --> 00:16:32,340 Pues, ala, nos hacemos nuestra interfaz, tareas, repositorio. 350 00:16:32,340 --> 00:16:38,259 Vale, y para que este sea un repositori 351 00:16:38,259 --> 00:16:39,179 Tiene que heredar 352 00:16:39,179 --> 00:16:41,460 De Mongo Repositori 353 00:16:41,460 --> 00:16:44,419 Mongo Repositori 354 00:16:44,419 --> 00:16:46,059 Sin más, yo creo que sí 355 00:16:46,059 --> 00:16:47,279 A ver, porque 356 00:16:47,279 --> 00:16:49,340 Tengo aquí un repo por ahí 357 00:16:49,340 --> 00:16:52,259 Sí, es Mongo Repositori sin más 358 00:16:52,259 --> 00:16:53,220 Vale 359 00:16:53,220 --> 00:16:57,580 Repositori 360 00:16:57,580 --> 00:17:01,179 Repositori 361 00:17:01,179 --> 00:17:05,180 De la entidad 362 00:17:05,180 --> 00:17:06,599 ¿Vale? 363 00:17:07,519 --> 00:17:09,039 Y de... 364 00:17:09,039 --> 00:17:10,339 ¿Eh? 365 00:17:15,299 --> 00:17:15,740 Sí. 366 00:17:23,250 --> 00:17:24,569 Sí, sería... 367 00:17:24,569 --> 00:17:26,410 Espérate, a ver, aquí como lo tengo puesto. 368 00:17:31,109 --> 00:17:32,329 Ah, vale, vale, vale. 369 00:17:32,430 --> 00:17:34,170 Nada, no. Es que no es necesario 370 00:17:34,170 --> 00:17:36,349 ponerle object id. Porque lo puedes 371 00:17:36,349 --> 00:17:38,069 poner object id, pero 372 00:17:38,069 --> 00:17:40,509 él lo mapea, lo mapea, hace la transformación 373 00:17:40,509 --> 00:17:41,549 a string directamente. 374 00:17:42,710 --> 00:17:43,809 ¿Vale? Entonces, 375 00:17:43,809 --> 00:17:46,549 tú puedes poner aquí string tranquilamente 376 00:17:46,549 --> 00:17:49,269 no pasa nada y hace la transformación 377 00:17:49,269 --> 00:17:50,849 hace la transformación 378 00:17:50,849 --> 00:17:51,309 y ya está 379 00:17:51,309 --> 00:17:54,750 es que si 380 00:17:54,750 --> 00:17:56,650 es mejor no trabajar con un object id 381 00:17:56,650 --> 00:17:58,769 en java, en realidad, porque no es un campo 382 00:17:58,769 --> 00:18:00,809 que puedes trabajar con él, pero no es un campo 383 00:18:00,809 --> 00:18:02,549 que vas a usar, un string siempre 384 00:18:02,549 --> 00:18:04,509 estamos más acostumbrados, es más manejable 385 00:18:04,509 --> 00:18:05,910 entonces 386 00:18:05,910 --> 00:18:08,549 mejor que un object id que es meter 387 00:18:08,549 --> 00:18:09,710 demasiada 388 00:18:09,710 --> 00:18:12,750 basurilla de mongo aquí dentro 389 00:18:12,750 --> 00:18:15,130 Pues el string que es el mapeo 390 00:18:15,130 --> 00:18:16,950 De eso de ahí directamente 391 00:18:16,950 --> 00:18:17,630 ¿Vale? 392 00:18:21,349 --> 00:18:23,049 Vale, entonces 393 00:18:23,049 --> 00:18:27,789 Y los getter y setter los tengo que cambiar 394 00:18:27,789 --> 00:18:29,049 Aquí 395 00:18:29,049 --> 00:18:30,009 Vale 396 00:18:30,009 --> 00:18:33,289 Los getter y setter 397 00:18:33,289 --> 00:18:34,569 Aquí 398 00:18:34,569 --> 00:18:38,789 Vale 399 00:18:38,789 --> 00:18:40,690 Stream 400 00:18:40,690 --> 00:18:44,799 Aquí puedes poner lo que sea 401 00:18:44,799 --> 00:18:44,940 ¿No? 402 00:18:46,140 --> 00:18:48,099 Internet, stream 403 00:18:48,099 --> 00:18:49,059 ¿Dónde? 404 00:18:49,440 --> 00:18:49,980 como id 405 00:18:49,980 --> 00:18:53,160 y ya él lo transforma a object id 406 00:18:53,160 --> 00:18:55,440 no, otro tipo de 407 00:18:55,440 --> 00:18:57,079 dato que no sea string, no estoy tan segura 408 00:18:57,079 --> 00:18:58,920 que lo transforme, porque es que es un string 409 00:18:58,920 --> 00:19:00,140 realmente, es decir 410 00:19:00,140 --> 00:19:02,240 el object id es 411 00:19:02,240 --> 00:19:03,799 es esto 412 00:19:03,799 --> 00:19:07,000 entonces si tú lo pones como string, te mapea 413 00:19:07,000 --> 00:19:09,339 esto tal cual, si es que quieres verlo 414 00:19:09,339 --> 00:19:10,960 como otro tipo de dato 415 00:19:10,960 --> 00:19:13,160 no podría hacer un casting sencillo 416 00:19:13,160 --> 00:19:15,059 claro, entonces 417 00:19:15,059 --> 00:19:17,319 si lo mapeas a object id, luego lo tienes 418 00:19:17,319 --> 00:19:19,079 que sacar a través del método que tenga 419 00:19:19,079 --> 00:19:20,099 Objet y de dentro 420 00:19:20,099 --> 00:19:22,200 O a que a las dos te funcionaría 421 00:19:22,200 --> 00:19:22,859 Vale 422 00:19:22,859 --> 00:19:26,160 Venga 423 00:19:26,160 --> 00:19:29,059 Pues ya tenemos el repositorio 424 00:19:29,059 --> 00:19:31,039 Que ya no sé cuál es el 425 00:19:31,039 --> 00:19:32,599 Mío y cuál es el 426 00:19:32,599 --> 00:19:33,700 El otro 427 00:19:33,700 --> 00:19:38,740 Pues este repositorio ya te genera 428 00:19:38,740 --> 00:19:40,039 Un montón de métodos 429 00:19:40,039 --> 00:19:40,819 Sin más 430 00:19:40,819 --> 00:19:44,779 Pero podemos poner nosotros los nuestros propios 431 00:19:44,779 --> 00:19:46,500 Que en función 432 00:19:46,500 --> 00:19:48,359 Del nombre que pongamos que tiene un montón 433 00:19:48,359 --> 00:19:49,079 De opciones 434 00:19:49,079 --> 00:19:50,819 voy a tejear las búsquedas 435 00:19:50,819 --> 00:19:52,299 solas o si no 436 00:19:52,299 --> 00:19:54,619 si aún así hay alguna consulta que no 437 00:19:54,619 --> 00:19:55,940 encontramos un nombre 438 00:19:55,940 --> 00:19:58,519 que se adapte, podemos poner una 439 00:19:58,519 --> 00:20:00,859 pero vamos a hacer primero el servicio 440 00:20:00,859 --> 00:20:02,799 y el controller para ver si nos funciona 441 00:20:02,799 --> 00:20:04,880 todo y luego ya sí que podemos 442 00:20:04,880 --> 00:20:06,460 jugar a poner aquí 443 00:20:06,460 --> 00:20:08,059 métodos propios del repositorio 444 00:20:08,059 --> 00:20:09,539 ¿también usa jpql? 445 00:20:11,509 --> 00:20:13,849 esto no es sql, a ver esto tiene 446 00:20:13,849 --> 00:20:15,690 su criterio, ya lo hemos visto 447 00:20:15,690 --> 00:20:18,190 entonces jpql no puede consultar 448 00:20:18,190 --> 00:20:19,970 aquí, pues venga 449 00:20:19,970 --> 00:20:28,819 servicio, que eso sería 450 00:20:28,819 --> 00:20:29,960 lo siguiente, ¿qué haríamos? 451 00:20:30,700 --> 00:20:32,240 que no lo he preguntado, pero ya lo 452 00:20:32,240 --> 00:20:35,099 me lo habríais contestado 453 00:20:35,099 --> 00:20:38,900 ¿yo qué hago? 454 00:20:41,240 --> 00:20:43,019 ah, es que estoy en otro proyecto 455 00:20:43,019 --> 00:20:44,220 que no es, ¿verdad que sí? 456 00:20:45,859 --> 00:20:46,720 ¿dónde estoy? aquí 457 00:20:46,720 --> 00:21:09,930 vale, a ver, ¿qué hora 458 00:21:09,930 --> 00:21:12,089 es? 16 459 00:21:12,089 --> 00:21:13,970 bueno, en fin, como hay 10 460 00:21:13,970 --> 00:21:14,950 paramos, ¿vale? 461 00:21:14,950 --> 00:21:18,269 Vale 462 00:21:18,269 --> 00:21:19,970 Y ahora 463 00:21:19,970 --> 00:21:23,049 Pues este necesita el repositorio 464 00:21:23,049 --> 00:21:23,789 A ver 465 00:21:23,789 --> 00:21:26,730 Cuidado, vamos a anotar 466 00:21:26,730 --> 00:21:28,630 Para que Spring lo 467 00:21:28,630 --> 00:21:30,369 Para que Spring lo encuentre 468 00:21:30,369 --> 00:21:32,130 El repositorio no hace falta anotarlo 469 00:21:32,130 --> 00:21:33,430 Ya sabéis 470 00:21:33,430 --> 00:21:34,950 Pero este sí 471 00:21:34,950 --> 00:21:38,930 Entonces, este va a necesitar el repositorio 472 00:21:38,930 --> 00:21:40,950 Tareas 473 00:21:41,690 --> 00:21:42,950 Repositori 474 00:21:44,950 --> 00:21:46,950 el repo 475 00:21:46,950 --> 00:21:47,789 que lo 476 00:21:47,789 --> 00:21:50,309 inyecta por el constructor 477 00:21:50,309 --> 00:22:00,519 ah, no 478 00:22:00,519 --> 00:22:02,000 vacío no hace falta 479 00:22:02,000 --> 00:22:04,940 lo que quiero es que use 480 00:22:04,940 --> 00:22:06,819 el constructor que va a usar sprint 481 00:22:06,819 --> 00:22:09,099 es este, este de aquí 482 00:22:09,099 --> 00:22:10,720 entonces 483 00:22:10,720 --> 00:22:12,500 y ahora 484 00:22:12,500 --> 00:22:13,420 disp 485 00:22:13,420 --> 00:22:17,680 este 486 00:22:17,680 --> 00:22:19,500 ala 487 00:22:19,500 --> 00:22:26,380 Pues eso lo estuvimos preguntando 488 00:22:26,380 --> 00:22:26,900 A ver 489 00:22:26,900 --> 00:22:30,539 ¿Por qué Sprint recomendaba 490 00:22:30,539 --> 00:22:31,900 Inyectar por constructor 491 00:22:31,900 --> 00:22:34,180 Y no por cableado 492 00:22:34,180 --> 00:22:36,480 Autocableado, o sea por 493 00:22:36,480 --> 00:22:40,460 Y no nos supo decir 494 00:22:40,460 --> 00:22:42,539 Ninguna conclusión, nada más que era la recomendación 495 00:22:43,079 --> 00:22:45,859 Pero 496 00:22:45,859 --> 00:22:48,500 Yo 497 00:22:48,500 --> 00:22:51,200 Creo recordar 498 00:22:51,200 --> 00:22:54,339 Es que creo recordar una cosa 499 00:22:54,339 --> 00:22:55,980 Que dijimos en ese momento 500 00:22:55,980 --> 00:22:57,140 Que tenía bastante sentido 501 00:22:57,140 --> 00:22:58,680 Pero 502 00:22:58,680 --> 00:23:08,069 Sí, que está relacionado con que te da más flexibilidad 503 00:23:08,069 --> 00:23:08,809 O sea, más 504 00:23:08,809 --> 00:23:11,690 El Autowire usa el constructor 505 00:23:11,690 --> 00:23:12,910 Suyo 506 00:23:12,910 --> 00:23:16,069 Tú aquí puedes de alguna manera marcar 507 00:23:16,069 --> 00:23:17,849 Puedes especificar 508 00:23:17,849 --> 00:23:19,710 Qué hacer en el constructor, puedes hacer más cosas 509 00:23:19,710 --> 00:23:20,869 Tienes más libertad 510 00:23:20,869 --> 00:23:24,119 Supongo que va por ahí 511 00:23:24,119 --> 00:23:27,119 En cualquier caso se desrecomienda 512 00:23:27,119 --> 00:23:28,640 Si puedes inyectar por constructor 513 00:23:28,640 --> 00:23:30,680 Usar el otro, pues nada, hagámoslo 514 00:23:30,680 --> 00:23:32,380 Vale, entonces aquí 515 00:23:32,380 --> 00:23:36,440 El public 516 00:23:36,440 --> 00:23:38,220 Este, pues este 517 00:23:38,220 --> 00:23:40,079 Método de servicio, vamos a 518 00:23:40,079 --> 00:23:41,980 Recuperar 519 00:23:41,980 --> 00:23:44,240 Por ejemplo, todas las tareas que tenemos 520 00:23:44,240 --> 00:23:46,759 Una lista de tareas 521 00:23:46,759 --> 00:23:50,740 Venga, eso es lo primero que vamos a hacer 522 00:23:50,740 --> 00:23:52,000 Esto por el nombre no hace nada 523 00:23:52,000 --> 00:23:54,140 Depende de cómo pongas el nombre 524 00:23:54,140 --> 00:23:58,519 Claro, esa es la idea 525 00:23:58,519 --> 00:23:59,779 Y mucho más, incluso 526 00:23:59,779 --> 00:24:02,119 GetTareas 527 00:24:02,119 --> 00:24:05,680 Sí, pero es que llega un momento 528 00:24:05,680 --> 00:24:07,140 Ya esto es como la IA 529 00:24:07,140 --> 00:24:08,980 Que ya no saben lo que hacen 530 00:24:08,980 --> 00:24:11,279 Entonces 531 00:24:11,279 --> 00:24:13,559 Pues nuestro repositorio 532 00:24:13,559 --> 00:24:16,279 Efectivamente, solo por el hecho de ser un MongoDB 533 00:24:16,279 --> 00:24:18,380 Repositorio, mira todo lo que tiene 534 00:24:18,380 --> 00:24:20,420 Pues lo mismo que el Spring Data JPA 535 00:24:20,420 --> 00:24:22,039 Y no solo eso 536 00:24:22,039 --> 00:24:24,440 Sino la posibilidad de hacer tus propios métodos 537 00:24:24,440 --> 00:24:26,299 Que ya haremos, pues en este caso será el find 538 00:24:26,299 --> 00:24:31,480 vale, ala 539 00:24:31,480 --> 00:24:32,339 ya está 540 00:24:32,339 --> 00:24:37,160 ya tenemos todo 541 00:24:37,160 --> 00:24:39,019 todas las tareas 542 00:24:39,019 --> 00:24:40,059 en el servicio 543 00:24:40,059 --> 00:24:43,259 y ahora tendríamos que hacer el controller 544 00:24:43,259 --> 00:24:44,819 que se hace el método get 545 00:24:44,819 --> 00:24:47,279 que llama a este, lo muestra 546 00:24:47,279 --> 00:24:49,180 etcétera, pero eso no nos va a dar 547 00:24:49,180 --> 00:24:50,940 tiempo a hacerlo ahora, vamos solamente 548 00:24:50,940 --> 00:24:51,799 a ejecutarlo 549 00:24:51,799 --> 00:24:55,160 no vamos a ver nada, pero a ver si nos 550 00:24:55,160 --> 00:24:57,039 da algún error, porque si nos da 551 00:24:57,039 --> 00:24:58,859 algún error es porque Spring Boot ha detectado 552 00:24:58,859 --> 00:25:00,839 algún error en nuestro fichero de configuración 553 00:25:00,839 --> 00:25:02,900 entonces a lo mejor ese ya 554 00:25:02,900 --> 00:25:04,900 ML, pues podríamos tenerlo mal 555 00:25:04,900 --> 00:25:06,720 vamos a asegurarnos de que lo que hemos hecho 556 00:25:06,720 --> 00:25:08,920 hasta ahora, a Spring no le 557 00:25:08,920 --> 00:25:09,759 da mal rollo 558 00:25:09,759 --> 00:25:20,680 vale, magnífico 559 00:25:20,680 --> 00:25:23,119 las anotaciones están 560 00:25:23,119 --> 00:25:25,420 bien, el archivo de configuración 561 00:25:25,420 --> 00:25:27,059 está bien, Spring Boot 562 00:25:27,059 --> 00:25:28,640 ha sido capaz de escanear 563 00:25:28,640 --> 00:25:30,920 todo sin problema, pero claro 564 00:25:30,920 --> 00:25:33,200 nos falta el controller para pedirle ahora ya 565 00:25:33,200 --> 00:25:34,920 a través del 566 00:25:34,920 --> 00:25:36,460 navegador o de Postman 567 00:25:36,460 --> 00:25:38,240 lo que queramos. 568 00:25:44,480 --> 00:25:47,039 ¿Has anotado esto? 569 00:25:47,559 --> 00:25:49,279 No, me dice en tareas repositorio. 570 00:25:50,299 --> 00:25:53,740 ¿En tareas repositorio lo has puesto bien todo? 571 00:25:54,000 --> 00:25:54,279 Sí. 572 00:25:54,980 --> 00:25:59,980 ¿Pero te da error o qué es? 573 00:25:59,980 --> 00:26:01,599 Me dice, ¿aplicar un plan de testar? 574 00:26:02,180 --> 00:26:03,740 ¿Para hacer un... 575 00:26:03,740 --> 00:26:12,700 Service. 576 00:26:27,740 --> 00:26:54,150 si con el paquete del repositorio 577 00:26:54,150 --> 00:26:55,849 no está colgando de app, no lo va a encontrar 578 00:26:55,849 --> 00:26:59,990 claro, pues cuidado con eso porque 579 00:26:59,990 --> 00:27:02,369 uno a lo mejor escribe el nombre del paquete 580 00:27:02,369 --> 00:27:04,470 escribe app con tres p's pero no se ha dado cuenta 581 00:27:04,470 --> 00:27:06,369 y se puede estar tres horas diciendo 582 00:27:06,369 --> 00:27:07,910 porque no lo encuentra, porque no lo encuentra 583 00:27:07,910 --> 00:27:12,349 porque no está en la jerarquía de paquetes.