1 00:00:00,000 --> 00:00:01,940 Tendríamos dos opciones, la A y la B, y seguro 2 00:00:01,940 --> 00:00:03,379 que la A nos gusta y la B sí. 3 00:00:04,419 --> 00:00:06,059 La A, pues sería 4 00:00:06,059 --> 00:00:07,960 desde el XML hacer el esquema 5 00:00:07,960 --> 00:00:10,019 a mano, que sabéis 6 00:00:10,019 --> 00:00:11,880 porque habéis estudiado 7 00:00:11,880 --> 00:00:13,820 esquemas el año pasado y sabéis hacerlo, 8 00:00:13,960 --> 00:00:15,800 pues es el Complex Diver y poniendo la 9 00:00:15,800 --> 00:00:17,960 Sequence, si es una lista, el Unbounded 10 00:00:17,960 --> 00:00:19,620 Unlimited, el todo, 11 00:00:19,780 --> 00:00:21,820 el Unbounded no sé qué, sabéis 12 00:00:21,820 --> 00:00:22,480 hacer un esquema. 13 00:00:23,699 --> 00:00:25,760 Vale, pero bueno, no podemos 14 00:00:25,760 --> 00:00:27,640 repasarlo todo, entonces 15 00:00:27,640 --> 00:00:29,539 pues seguramente preferir la opción B 16 00:00:29,539 --> 00:00:30,820 Que generarlo 17 00:00:30,820 --> 00:00:33,159 Automáticamente a alguna herramienta online 18 00:00:33,159 --> 00:00:34,740 ¿Verdad? Lo sabía 19 00:00:34,740 --> 00:00:37,640 Vale, entonces, por curiosidad 20 00:00:37,640 --> 00:00:39,359 ¿Qué herramientas online usáis vosotros 21 00:00:39,359 --> 00:00:41,280 Para generar? Porque yo, el otro día 22 00:00:41,280 --> 00:00:43,219 Cuando lo generé, puse la primera 23 00:00:43,219 --> 00:00:45,219 Que me salió en Google, porque yo no trabajo 24 00:00:45,219 --> 00:00:46,659 Con NXML normalmente 25 00:00:46,659 --> 00:00:49,299 Y sí, me salió el esquema, pero 26 00:00:49,299 --> 00:00:51,659 Me salió un poco feo 27 00:00:51,659 --> 00:00:55,320 ¿Qué herramientas usáis vosotros para 28 00:00:55,320 --> 00:00:57,219 De hecho 29 00:00:57,219 --> 00:00:58,780 Más que feo, me salió mal 30 00:00:58,780 --> 00:01:00,159 lo tuve que cambiar porque no había 31 00:01:00,159 --> 00:01:01,759 generar xml 32 00:01:01,759 --> 00:01:04,379 xsd 33 00:01:04,379 --> 00:01:06,700 desde xml 34 00:01:06,700 --> 00:01:08,859 ¿El año pasado 35 00:01:08,859 --> 00:01:10,239 usabais alguna herramienta en concreto? 36 00:01:11,140 --> 00:01:12,599 Yo usé alguna, pero no me acuerdo 37 00:01:12,599 --> 00:01:14,140 Yo he probado varias 38 00:01:14,140 --> 00:01:16,700 Pero en clase, ¿en ningún momento generasteis 39 00:01:16,700 --> 00:01:18,280 esquemas con las herramientas online? 40 00:01:18,780 --> 00:01:20,700 No, de hecho es que nos mandó un porro 41 00:01:20,700 --> 00:01:22,379 donde tal vez dijo, bueno, hacerlas 42 00:01:22,379 --> 00:01:24,040 Como no había tiempo, nos mandó 43 00:01:24,040 --> 00:01:28,760 Vale, pues bueno 44 00:01:28,760 --> 00:01:31,739 Uno puede usar una herramienta cualquiera de estas 45 00:01:31,739 --> 00:01:34,620 O como yo ya lo generé el otro día 46 00:01:34,620 --> 00:01:36,780 Pues coger el mío y ya está 47 00:01:36,780 --> 00:01:37,939 ¿Qué era? 48 00:01:38,439 --> 00:01:39,620 Si hubierais dicho el de recetario 49 00:01:39,620 --> 00:01:40,200 Eso no lo tenía 50 00:01:40,200 --> 00:01:41,680 Pero bueno, lo hubiéramos generado y ya está 51 00:01:41,680 --> 00:01:43,900 ¿Qué? ¿Dónde lo tengo? 52 00:01:47,180 --> 00:01:48,000 Mezco tonta 53 00:01:48,000 --> 00:01:53,870 Ah, estoy en el de abajo 54 00:01:53,870 --> 00:01:55,209 Vale 55 00:01:55,209 --> 00:02:01,890 Ah, esquemas, lo tengo aquí 56 00:02:01,890 --> 00:02:02,290 Vale 57 00:02:02,290 --> 00:02:06,920 Tengo que hacerlo en inglés 58 00:02:06,920 --> 00:02:08,979 Vale, pues voy a subirlo 59 00:02:08,979 --> 00:02:10,819 Bueno, a ver, voy al botón derecho 60 00:02:10,819 --> 00:02:12,500 Guardar enlace como, ¿vale? 61 00:02:13,400 --> 00:02:14,139 Muy bien 62 00:02:14,139 --> 00:02:16,000 Y 63 00:02:16,000 --> 00:02:21,810 Y ponerlo donde queráis 64 00:02:21,810 --> 00:02:23,469 Pues en la carpeta 65 00:02:23,469 --> 00:02:24,729 SRC Main Resources 66 00:02:24,729 --> 00:02:26,629 Si queréis, os abrís una 67 00:02:26,629 --> 00:02:27,750 Que sea esquemas 68 00:02:27,750 --> 00:02:30,210 Y lo guardáis en esquemas, donde queráis 69 00:02:30,210 --> 00:02:31,550 ¿Vale? Entonces 70 00:02:31,550 --> 00:02:35,389 Yo me lo voy a abrir en una carpeta 71 00:02:35,389 --> 00:02:44,009 Y ahí me lo pongo 72 00:02:44,009 --> 00:03:01,319 ahí no está 73 00:03:01,319 --> 00:03:04,520 está nuestro esquemita 74 00:03:04,520 --> 00:03:06,460 entonces efectivamente 75 00:03:06,460 --> 00:03:09,060 es un poco feo 76 00:03:09,060 --> 00:03:10,500 porque no lo ha hecho 77 00:03:10,500 --> 00:03:11,939 generando los tipos aparte 78 00:03:11,939 --> 00:03:14,979 al no haber generado los tipos aparte 79 00:03:14,979 --> 00:03:16,659 al no haber hecho un tile 80 00:03:16,659 --> 00:03:18,740 y luego haber hecho referencia al tile 81 00:03:18,740 --> 00:03:20,699 pues le queda un nivel de anidamiento horroroso 82 00:03:20,699 --> 00:03:21,979 claro 83 00:03:21,979 --> 00:03:22,939 pero bueno 84 00:03:22,939 --> 00:03:26,219 pero lo entendemos 85 00:03:26,219 --> 00:03:27,560 lo entendéis que es lo que importa 86 00:03:27,560 --> 00:03:30,199 universidad es una lista 87 00:03:30,199 --> 00:03:31,180 de facultades 88 00:03:31,180 --> 00:03:33,879 facultades a su vez es una lista 89 00:03:33,879 --> 00:03:39,990 de facultad 90 00:03:39,990 --> 00:03:41,750 de hecho 91 00:03:41,750 --> 00:03:46,860 de hecho 92 00:03:46,860 --> 00:03:49,039 no está bien este esquema 93 00:03:49,039 --> 00:03:49,599 porque 94 00:03:49,599 --> 00:03:52,620 como el xml que le pasé 95 00:03:52,620 --> 00:03:54,639 para generarlo solo tenía 96 00:03:54,639 --> 00:03:56,479 ah no no perdón perdón 97 00:03:56,479 --> 00:03:58,419 perdón facultades es el nodo envolvente 98 00:03:58,419 --> 00:04:00,000 que es solo uno perdón perdón está bien 99 00:04:00,000 --> 00:04:01,819 que tienen varias 100 00:04:01,819 --> 00:04:20,199 Tiene un montón de facultades, por eso facultades es unbounded este. Y ahora ya tiene el envolvente carreras, que tiene un montón de carreras. Y luego ya cada carrera tiene nombre, departamento y estudiantes, que es el envolvente de estudiante, que puede tener muchos cada carrera. 101 00:04:20,199 --> 00:04:29,040 y cada estudiante tiene su nombre, su edad y su email 102 00:04:29,040 --> 00:04:35,490 y un envolvente de materias que puede contener muchas materias. 103 00:04:35,649 --> 00:04:37,990 Cada materia con su nombre, nota y código. 104 00:04:39,449 --> 00:04:41,269 Algunos de ellos son atributos además. 105 00:04:42,250 --> 00:04:44,410 Bueno, pues esto sí, lo podríamos haber hecho. 106 00:04:45,089 --> 00:04:47,689 Este es el atributo del estudiante, creo. 107 00:04:47,689 --> 00:04:49,449 No sé, ya he perdido la... 108 00:04:49,449 --> 00:04:52,329 y podríamos haberlo hecho a mano 109 00:04:52,329 --> 00:04:54,490 lógicamente, pero bueno, se hace un poquito 110 00:04:54,490 --> 00:04:56,149 pesado hacerlo a mano 111 00:04:56,149 --> 00:04:57,629 entonces 112 00:04:57,629 --> 00:05:00,509 lo único 113 00:05:00,509 --> 00:05:02,610 cuidado con las herramientas que lo generan online 114 00:05:02,610 --> 00:05:03,009 porque 115 00:05:03,009 --> 00:05:05,230 si 116 00:05:05,230 --> 00:05:08,730 a mí claro, como el XML que le pasé 117 00:05:08,730 --> 00:05:10,649 creo que solo tenía un estudiante 118 00:05:10,649 --> 00:05:12,329 o solo tenía una facultad, no sé, entonces 119 00:05:12,329 --> 00:05:14,389 él no interpretó que podía tener varias 120 00:05:14,389 --> 00:05:16,670 entonces le tuve que añadir 121 00:05:16,670 --> 00:05:17,350 el 122 00:05:17,350 --> 00:05:19,970 el maxocus este para que 123 00:05:19,970 --> 00:05:21,649 incorporara que podía tener más de una 124 00:05:21,649 --> 00:05:23,930 pero bueno, salvo por ese detalle 125 00:05:23,930 --> 00:05:25,490 lo normal es que lo genere bien 126 00:05:25,490 --> 00:05:28,009 vale, pues si tenemos el esquema 127 00:05:28,009 --> 00:05:30,129 ahora ya la herramienta 128 00:05:30,129 --> 00:05:31,970 esta xjc 129 00:05:31,970 --> 00:05:41,519 bueno, pues la herramienta 130 00:05:42,259 --> 00:05:43,240 xjc 131 00:05:43,240 --> 00:05:45,680 que es otro conjunto de clases 132 00:05:45,680 --> 00:05:47,759 es la que nos permite 133 00:05:47,759 --> 00:05:49,500 a través de un 134 00:05:49,500 --> 00:05:51,920 a partir de un XSD generar las clases 135 00:05:51,920 --> 00:05:52,339 JaxB 136 00:05:52,339 --> 00:05:55,939 entonces el otro día ya dijimos que podíamos 137 00:05:55,939 --> 00:05:57,860 invocarla desde consola 138 00:05:57,860 --> 00:05:59,459 pues XJC 139 00:05:59,459 --> 00:06:01,220 claro, habría que ponerse en la ruta 140 00:06:01,220 --> 00:06:03,199 donde está el bin de XJC 141 00:06:03,199 --> 00:06:05,899 que no está dentro del JDK 142 00:06:05,899 --> 00:06:07,800 porque desde Java 11 143 00:06:07,800 --> 00:06:11,240 la tecnología 144 00:06:11,240 --> 00:06:13,360 de JaxB ha salido de la máquina 145 00:06:13,360 --> 00:06:14,720 virtual, entonces 146 00:06:14,720 --> 00:06:17,120 XJC tendría que descargarlo como 147 00:06:17,120 --> 00:06:19,339 un JAR o como dependencia como haremos nosotros 148 00:06:19,339 --> 00:06:21,660 y si yo ya lo añado al pad 149 00:06:21,660 --> 00:06:23,899 pues entonces puedo invocar al comando 150 00:06:23,899 --> 00:06:25,300 claro, si he añadido al pad 151 00:06:25,300 --> 00:06:27,680 ese hard y lo invoco 152 00:06:27,680 --> 00:06:29,519 le doy el XSD 153 00:06:29,519 --> 00:06:31,740 y me genera las clases y ya está 154 00:06:31,740 --> 00:06:34,139 pero si estamos trabajando con el Eclipse 155 00:06:34,139 --> 00:06:35,060 pues hombre 156 00:06:35,060 --> 00:06:37,839 podemos usar el plugin que me da Eclipse 157 00:06:37,839 --> 00:06:39,339 y ese plugin 158 00:06:39,339 --> 00:06:41,259 ¿cómo lo invocamos? 159 00:06:41,759 --> 00:06:43,879 pues nos ponemos en el 160 00:06:43,879 --> 00:06:45,899 ah, perdón 161 00:06:45,899 --> 00:06:47,860 nos ponemos en el botón 162 00:06:47,860 --> 00:06:49,819 derecho del esquema 163 00:06:49,819 --> 00:06:53,439 y en algún momento nos sale 164 00:06:53,439 --> 00:06:55,779 el generar 165 00:06:55,779 --> 00:06:59,579 y aquí yo puedo generar las clases 166 00:06:59,579 --> 00:07:01,860 yaxb o un xml file de ejemplo 167 00:07:01,860 --> 00:07:02,500 si quiero 168 00:07:02,500 --> 00:07:04,620 genero las clases yaxb 169 00:07:04,620 --> 00:07:06,399 y el ya 170 00:07:06,399 --> 00:07:08,279 vale 171 00:07:08,279 --> 00:07:10,199 lo quiero aquí 172 00:07:10,199 --> 00:07:13,360 pues las quiero aquí 173 00:07:13,360 --> 00:07:20,860 y esto lo dejamos todo por defecto 174 00:07:20,860 --> 00:07:25,620 defecto. Podríamos empezar a entrar a ver qué significa cada una. Tendríamos dos problemas. 175 00:07:26,319 --> 00:07:31,060 Uno, que la mayoría de las cosas no lo sé. Dos, que perderíamos mucho tiempo. Entonces, 176 00:07:31,319 --> 00:07:34,819 en la operativa nuestra de trabajo, pues si no funciona con las opciones por defecto, 177 00:07:35,199 --> 00:07:48,660 así nos quedamos y ya está. Vale. Puede que sobre escribas las clases que ya tenías. 178 00:07:48,660 --> 00:07:56,279 ¿No te importa? No, hombre, no me importa. Y ¡pum! Claro, normal. ¿Vale? ¿Qué es 179 00:07:56,279 --> 00:07:57,639 lo que me está diciendo? Rápido. 180 00:07:59,379 --> 00:08:00,319 Ya, pero ¿qué es lo del 181 00:08:00,319 --> 00:08:02,220 XJC? ¿Qué me está diciendo? Traducidmelo a mi 182 00:08:02,220 --> 00:08:02,439 idioma. 183 00:08:04,500 --> 00:08:05,660 Ya, pero ¿qué me está diciendo? 184 00:08:06,839 --> 00:08:08,019 ¿Qué hay que importar? 185 00:08:09,259 --> 00:08:10,000 ¿Qué me está diciendo? 186 00:08:10,439 --> 00:08:11,620 ¿Que le falta la dependencia? 187 00:08:12,100 --> 00:08:14,079 Pues eso, ¿vale? No es que haya que importar. 188 00:08:14,180 --> 00:08:16,199 Tú importas cuando ya tienes la dependencia integrada 189 00:08:16,199 --> 00:08:18,300 en tu proyecto. Eso es lo que me está diciendo. 190 00:08:18,600 --> 00:08:18,819 ¿Vale? 191 00:08:19,819 --> 00:08:20,680 Entonces, en cuanto 192 00:08:20,680 --> 00:08:23,160 al class not found exception, 193 00:08:23,439 --> 00:08:24,920 ahora ya en nuestro idioma es 194 00:08:24,920 --> 00:08:27,259 Al POM le faltan cosas 195 00:08:27,259 --> 00:08:28,699 Al POM le faltan cosas 196 00:08:28,699 --> 00:08:30,100 Traducido a nuestro idioma 197 00:08:30,100 --> 00:08:32,440 Pues sí, es que nuestro POM efectivamente 198 00:08:32,440 --> 00:08:34,279 Le hemos dejado aquí 199 00:08:34,279 --> 00:08:35,860 Más solo 200 00:08:35,860 --> 00:08:39,360 Que es que no tiene ahí nada de nada 201 00:08:39,360 --> 00:08:41,000 No le hemos quitado ni el rojito 202 00:08:41,000 --> 00:08:43,279 Que eso ya sí que 203 00:08:43,279 --> 00:08:47,600 Ah, no era ese 204 00:08:47,600 --> 00:08:48,679 Me he equivocado de ese 205 00:08:48,679 --> 00:08:50,259 Era este 206 00:08:50,259 --> 00:08:55,549 No le hemos quitado ni el rojo 207 00:08:55,549 --> 00:08:55,950 Vale 208 00:08:55,950 --> 00:08:59,590 ¿Cómo que ni te sale? 209 00:09:00,389 --> 00:09:01,529 ¿No te sale el rojo? 210 00:09:02,730 --> 00:09:04,090 ¿Sin la S puesta? 211 00:09:11,559 --> 00:09:12,980 Pues no lo sé 212 00:09:12,980 --> 00:09:15,539 Alguna combinación extraña de versiones 213 00:09:15,539 --> 00:09:16,980 Que tienes en tu arquitectura 214 00:09:16,980 --> 00:09:20,960 Vale, entonces 215 00:09:20,960 --> 00:09:23,559 La dependencia de JaxB lógicamente nos falta 216 00:09:23,559 --> 00:09:25,679 Porque vamos a trabajar con las anotaciones 217 00:09:25,679 --> 00:09:26,940 Las clases generadas 218 00:09:26,940 --> 00:09:28,700 Van a tener las anotaciones 219 00:09:28,700 --> 00:09:31,799 Si no está en la dependencia de JaxB 220 00:09:31,799 --> 00:09:33,299 Esas anotaciones no van a 221 00:09:33,299 --> 00:09:35,179 Poder ser resueltas 222 00:09:35,179 --> 00:09:38,100 Bueno, pero es que eso ya lo sabemos de memoria 223 00:09:38,100 --> 00:09:39,480 Y eso lo copiamos de 224 00:09:39,480 --> 00:09:40,820 Otro proyecto 225 00:09:40,820 --> 00:09:42,960 Claro que lo tenéis en el otro Eclipse 226 00:09:42,960 --> 00:09:46,889 Eso 227 00:09:46,889 --> 00:09:50,169 Eran la API 228 00:09:50,169 --> 00:09:51,409 Que era esta de aquí 229 00:09:51,409 --> 00:09:58,740 La API que era esta y luego la 230 00:09:58,740 --> 00:10:00,559 Runtime que era la implementada 231 00:10:00,559 --> 00:10:01,559 ¿Eh? 232 00:10:01,559 --> 00:10:03,080 Te coge todos los proyectos 233 00:10:03,080 --> 00:10:04,759 O sea que no hay problema 234 00:10:04,759 --> 00:10:06,600 Ah, bueno, sí, sí 235 00:10:06,600 --> 00:10:07,840 Pero lo tienes que abrir 236 00:10:07,840 --> 00:10:10,720 Ah, que estás usando el mismo workspace, te refieres 237 00:10:10,720 --> 00:10:11,139 Sí 238 00:10:11,139 --> 00:10:17,190 Y 239 00:10:17,190 --> 00:10:19,649 Y la otra 240 00:10:19,649 --> 00:10:21,509 Que es 241 00:10:21,509 --> 00:10:23,529 La 242 00:10:23,529 --> 00:10:24,870 Implementación 243 00:10:24,870 --> 00:10:26,909 Vale 244 00:10:26,909 --> 00:10:34,139 Esta por lo menos nos falta 245 00:10:34,139 --> 00:10:41,759 Pero si uno 246 00:10:41,759 --> 00:10:43,139 Si volvemos a intentar 247 00:10:43,139 --> 00:10:44,559 Generarlo 248 00:10:44,559 --> 00:10:53,309 Pongo cualquier cosa 249 00:10:53,309 --> 00:10:54,909 Porque nos va a salir error, da lo mismo 250 00:10:54,909 --> 00:11:05,720 No, no, no, perdona 251 00:11:05,720 --> 00:11:08,759 He debido irme al proyecto que no es 252 00:11:08,759 --> 00:11:10,360 Efectivamente 253 00:11:10,360 --> 00:11:15,970 Vale 254 00:11:15,970 --> 00:11:23,580 Lo que sea 255 00:11:23,580 --> 00:11:24,399 Me da igual 256 00:11:24,399 --> 00:11:33,490 Vale, nos sigue diciendo lo mismo 257 00:11:33,490 --> 00:11:35,090 Claro, entonces 258 00:11:35,090 --> 00:11:37,769 Ah, es que x, j, c 259 00:11:37,769 --> 00:11:39,669 No me he acordado 260 00:11:39,669 --> 00:11:40,529 No me he dado cuenta 261 00:11:40,529 --> 00:11:43,289 de que, espérate, es una tecnología 262 00:11:43,289 --> 00:11:44,970 diferente, vale 263 00:11:44,970 --> 00:11:46,909 son situaciones típicas que nos pasan 264 00:11:46,909 --> 00:11:48,990 es que es otra tecnología, aunque tenga que ver con JaxB 265 00:11:48,990 --> 00:11:51,330 entonces va a ser que está en otro lado 266 00:11:51,330 --> 00:11:52,669 va a ser que está en otro lado 267 00:11:52,669 --> 00:11:55,309 bueno, pues uno se pone a buscar 268 00:11:55,309 --> 00:11:57,389 si está completamente perdido 269 00:11:57,389 --> 00:11:59,269 pues claro, tiene que buscar en el repositorio 270 00:11:59,269 --> 00:12:00,809 de Maven, pero lo 271 00:12:00,809 --> 00:12:02,929 claro, pero lo normal es que 272 00:12:02,929 --> 00:12:04,690 tú partas ya de un proyecto base 273 00:12:04,690 --> 00:12:06,370 y lo puedas copiar 274 00:12:06,370 --> 00:12:08,509 vamos a, antes de ponerla 275 00:12:08,509 --> 00:12:16,740 A ver si el repositorio de Maven 276 00:12:16,740 --> 00:12:17,980 Nos 277 00:12:17,980 --> 00:12:25,960 Vale, pues aquí buscaríamos 278 00:12:25,960 --> 00:12:27,779 Por lo que sabemos 279 00:12:27,779 --> 00:12:30,120 Que es XJC, es lo único que 280 00:12:30,120 --> 00:12:33,460 XJC 281 00:12:33,460 --> 00:12:35,799 Nosotros nos vamos siempre a lo moderno 282 00:12:35,799 --> 00:12:37,840 Pues vámonos a esta, ¿no? 283 00:12:38,919 --> 00:12:39,440 Venga 284 00:12:39,440 --> 00:12:44,980 Vamos a esta 285 00:12:44,980 --> 00:12:48,519 Septiembre del 2025 286 00:12:48,519 --> 00:12:50,139 Ahí nos vamos 287 00:12:50,139 --> 00:12:52,259 copiamos 288 00:12:52,259 --> 00:12:57,240 y otra vez 289 00:12:57,240 --> 00:12:57,720 aquí 290 00:12:57,720 --> 00:13:06,259 vale 291 00:13:06,259 --> 00:13:10,519 entonces después de grabar 292 00:13:10,519 --> 00:13:12,500 tendremos aquí 293 00:13:12,500 --> 00:13:14,419 la dependencia de maven 294 00:13:14,419 --> 00:13:16,820 en las dependencias de maven 295 00:13:16,820 --> 00:13:18,919 ya se nos ha metido ahí la leche 296 00:13:18,919 --> 00:13:21,059 entre ellas 297 00:13:21,059 --> 00:13:22,940 de xbx, jc, esta de aquí 298 00:13:22,940 --> 00:13:24,320 y algunas de las que tira 299 00:13:24,320 --> 00:13:25,940 vale 300 00:13:25,940 --> 00:13:28,379 es que plantearse hacer cualquier cosita 301 00:13:28,379 --> 00:13:29,659 Ya sin Maven es una locura 302 00:13:29,659 --> 00:13:31,820 Porque Maven ya sabe 303 00:13:31,820 --> 00:13:34,720 Que cuando tú buscas una dependencia 304 00:13:34,720 --> 00:13:36,399 Esa va a depender de muchas otras 305 00:13:36,399 --> 00:13:37,519 Y te las descarga también 306 00:13:37,519 --> 00:13:43,500 Si no tendrías que hacer tú el rastreo 307 00:13:43,500 --> 00:13:45,580 De hecho aquí pues 308 00:13:45,580 --> 00:13:48,860 Aquí las tenemos 309 00:13:48,860 --> 00:13:51,279 Ahora ya sí 310 00:13:51,279 --> 00:13:52,580 Me genera las clases 311 00:13:52,580 --> 00:13:55,620 Voy a borrarlas 312 00:13:55,620 --> 00:13:56,220 Porque 313 00:13:56,220 --> 00:14:07,980 Ah por cierto yo no la he cambiado 314 00:14:07,980 --> 00:14:10,220 Voy a cambiarla 315 00:14:10,220 --> 00:14:13,799 Esto siempre se me olvida 316 00:14:13,799 --> 00:14:16,460 La máquina virtual 317 00:14:16,460 --> 00:14:17,840 Y el nivel de compilación 318 00:14:17,840 --> 00:14:20,580 Es que tú tienes un problema 319 00:14:20,580 --> 00:14:22,139 Con las rutas, con el classpath 320 00:14:22,139 --> 00:14:23,080 Por eso es por lo que 321 00:14:23,080 --> 00:14:26,340 Por eso digo 322 00:14:26,340 --> 00:14:27,879 Que tú tienes un problema con el 323 00:14:27,879 --> 00:14:29,759 Pero bueno, solo cambias con el classpath 324 00:14:29,759 --> 00:14:32,320 Entonces por eso ese clip se no te reconoce nada 325 00:14:32,320 --> 00:14:34,419 Pero ahora lo ponemos 326 00:14:34,419 --> 00:14:36,379 Vale, entonces yo que iba a hacer 327 00:14:36,379 --> 00:14:37,379 Cambiar el 328 00:14:37,379 --> 00:14:41,740 el nivel este de compilación 329 00:14:41,740 --> 00:14:43,419 al, en mi caso 330 00:14:43,419 --> 00:14:45,120 es el 22, no es el vuestro 331 00:14:45,120 --> 00:14:50,059 máquina última es la 22 332 00:14:50,059 --> 00:14:52,299 vale, vamos a verificar que ahora salen 333 00:14:52,299 --> 00:14:54,259 y si a alguno no le sale lo miramos 334 00:14:54,259 --> 00:14:55,539 rápidamente y luego las 335 00:14:55,539 --> 00:14:58,899 pues ahora ya si, generamos 336 00:14:58,899 --> 00:15:00,379 las clases jacks b 337 00:15:00,379 --> 00:15:04,440 en que paquete 338 00:15:04,440 --> 00:15:09,669 pues en este, que es donde 339 00:15:09,669 --> 00:15:11,649 va a estar el modelo de clases 340 00:15:11,649 --> 00:15:13,409 todo esto 341 00:15:13,409 --> 00:15:15,610 lo dejamos igual, bla bla bla 342 00:15:15,610 --> 00:15:25,460 Vale, o sea, ha generado a todo el mundo 343 00:15:25,460 --> 00:15:28,259 Dos miserillas clases en lugar de las tropecientas 344 00:15:28,259 --> 00:15:30,500 Que hacíamos nosotros 345 00:15:30,500 --> 00:15:32,039 Una por entidad 346 00:15:32,039 --> 00:15:35,950 ¿De dónde te la tienen que decir? 347 00:15:37,330 --> 00:15:39,529 En el nombre de paquete que tú le hayas dicho 348 00:15:39,529 --> 00:15:41,250 Que si no existe te lo crea 349 00:15:41,250 --> 00:15:43,539 Vale 350 00:15:43,539 --> 00:15:45,840 Y tú ahí, pues 351 00:15:45,840 --> 00:15:49,059 Vamos a ver 352 00:15:49,059 --> 00:15:56,059 No, no, pero espera 353 00:15:56,059 --> 00:15:59,379 Bueno, a ver, lo que no tienes es incorporar 354 00:15:59,379 --> 00:15:59,980 Las par 355 00:15:59,980 --> 00:16:02,139 No, pero ayer el proyecto 356 00:16:02,139 --> 00:16:14,399 Vamos a ver 357 00:16:14,399 --> 00:16:17,440 Vamos a ver 358 00:16:17,440 --> 00:16:20,879 Cómo le arreglamos el problema 359 00:16:20,879 --> 00:16:22,740 A este muchacho 360 00:16:22,740 --> 00:16:29,279 Vale, entonces lo puede hacer un poquito más legible 361 00:16:29,279 --> 00:16:30,940 Porque están todas arriba juntitas 362 00:16:30,940 --> 00:16:32,519 No tienes que ir buscando en cada get 363 00:16:32,519 --> 00:16:35,259 ¿Vale? Pero tienes que poner esto antes 364 00:16:35,259 --> 00:16:36,159 Para que JaxB 365 00:16:36,159 --> 00:16:38,940 Se entere de que tiene que ir aquí 366 00:16:38,940 --> 00:16:40,799 No lo tiene que obtener desde el get 367 00:16:40,799 --> 00:16:43,460 ¿Vale? Esto ya sabemos lo que es 368 00:16:43,460 --> 00:16:45,519 Esto ya sabemos lo que es 369 00:16:45,519 --> 00:16:47,000 Y aquí ya 370 00:16:47,000 --> 00:16:48,940 Lo empieza a anotar en anotaciones que conocemos 371 00:16:48,940 --> 00:16:49,919 Pues esta es la 372 00:16:49,919 --> 00:16:52,759 Facultades que es un elemento 373 00:16:52,759 --> 00:16:55,039 Este es el atributo 374 00:16:55,039 --> 00:16:55,919 De 375 00:16:55,919 --> 00:16:58,080 De universidad 376 00:16:58,080 --> 00:16:59,700 De la clase universidad 377 00:16:59,700 --> 00:17:01,139 Y así todo 378 00:17:01,139 --> 00:17:24,180 ¿Qué es lo que cambia? Lo hace de tal manera que las genera como clases internas. Entonces, a ver, esto está bien en realidad si estas entidades las vas a usar solamente para la parte de acceso al fichero, porque lo tienes todo ahí compacto en una sola clase y ya está. 379 00:17:24,180 --> 00:17:26,500 pero si forman parte de tu modelo 380 00:17:26,500 --> 00:17:27,960 para el resto de la aplicación 381 00:17:27,960 --> 00:17:30,220 que interacciona con otras cosas, pues hombre 382 00:17:30,220 --> 00:17:31,559 las entidades de un modelo 383 00:17:31,559 --> 00:17:34,279 están siempre por separado 384 00:17:34,279 --> 00:17:35,099 ¿vale? 385 00:17:36,279 --> 00:17:38,240 entonces, puede 386 00:17:38,240 --> 00:17:40,319 que en alguna de las cosas 387 00:17:40,319 --> 00:17:41,160 que yo he dicho 388 00:17:41,160 --> 00:17:44,220 aquí lo ponemos todo por defecto 389 00:17:44,220 --> 00:17:45,799 seguramente, no estoy segura 390 00:17:45,799 --> 00:17:47,779 podríais investigar si quisierais, tampoco 391 00:17:47,779 --> 00:17:50,559 creo que con XML debáis perder mucho tiempo 392 00:17:50,559 --> 00:17:52,079 porque bueno, los XML 393 00:17:52,079 --> 00:17:54,059 ya ahora mismo llegan hasta donde llegan 394 00:17:54,059 --> 00:17:57,680 seguramente cambiando alguna de esos 395 00:17:57,680 --> 00:17:59,740 check, pues te las genera 396 00:17:59,740 --> 00:18:01,480 como clases separadas 397 00:18:01,480 --> 00:18:03,700 ¿vale? pero yo he preferido 398 00:18:03,700 --> 00:18:05,339 que las genere como internas 399 00:18:05,339 --> 00:18:07,519 para que recordemos 400 00:18:07,519 --> 00:18:09,720 brevemente en 5 minutos, por si alguien no lo tiene 401 00:18:09,720 --> 00:18:11,400 fresco, lo de las clases internas 402 00:18:11,400 --> 00:18:12,799 porque es 403 00:18:12,799 --> 00:18:15,660 una forma de organizar las clases que se usa 404 00:18:15,660 --> 00:18:17,180 a veces en ciertos contextos 405 00:18:17,180 --> 00:18:18,920 y si alguien no lo tiene claro 406 00:18:18,920 --> 00:18:21,460 pues conviene recordarlo 407 00:18:21,460 --> 00:18:22,180 ¿vale? 408 00:18:22,180 --> 00:18:47,849 Entonces, la clase universidad tiene dos propiedades que están anotadas y una de las propiedades que es facultades es una clase interna de universidad que está aquí dentro, ¿veis? 409 00:18:47,849 --> 00:18:50,589 esta clase está dentro 410 00:18:50,589 --> 00:18:52,150 de la otra, está dentro 411 00:18:52,150 --> 00:18:54,930 y una clase interna 412 00:18:54,930 --> 00:18:56,789 puede ser estática 413 00:18:56,789 --> 00:18:58,710 una clase interna es el único 414 00:18:58,710 --> 00:19:00,289 caso de clase 415 00:19:00,289 --> 00:19:02,349 que puede recibir un 416 00:19:02,349 --> 00:19:04,289 modificador estático, porque en ese contexto 417 00:19:04,289 --> 00:19:04,990 tiene sentido 418 00:19:04,990 --> 00:19:08,930 ¿recordáis mínimamente 419 00:19:08,930 --> 00:19:10,670 lo de las clases internas, clases estáticas 420 00:19:10,670 --> 00:19:11,190 o algo así? 421 00:19:11,869 --> 00:19:13,750 no hace falta ni que repasemos nada 422 00:19:13,750 --> 00:19:16,650 de las clases 423 00:19:16,650 --> 00:19:18,369 internas porque eran como se usaban 424 00:19:18,369 --> 00:19:20,289 y cuando son estáticas y cuando no 425 00:19:20,289 --> 00:19:22,390 ah, creía que decías 426 00:19:22,390 --> 00:19:23,529 sí, sí, lo recuerdo perfectamente 427 00:19:23,529 --> 00:19:26,210 bueno, pues venga 428 00:19:26,210 --> 00:19:28,849 vamos a recordarlo en 5 minutos 429 00:19:28,849 --> 00:19:30,789 porque lo podemos encontrar en otros contextos 430 00:19:30,789 --> 00:19:32,950 ¿qué? 431 00:19:34,950 --> 00:19:35,630 a ver 432 00:19:35,630 --> 00:19:38,029 pues vamos a hacer un proyecto normal 433 00:19:38,029 --> 00:19:40,269 este no hace falta que sea Moven, Maven, porque es para 434 00:19:40,269 --> 00:19:42,170 jodida 435 00:19:42,170 --> 00:19:44,250 Moven, no hace falta que sea, joe, aquí es que 436 00:19:44,250 --> 00:19:45,630 hombre 437 00:19:45,630 --> 00:19:48,769 Has triunfado 438 00:19:48,769 --> 00:19:50,670 No hace falta, ahora lo 439 00:19:50,670 --> 00:19:51,630 Vale 440 00:19:51,630 --> 00:19:54,509 Lo que cuesta aquí 441 00:19:54,509 --> 00:19:56,490 Encontrar un proyecto normal y corriente 442 00:19:56,490 --> 00:19:57,690 Lo voy a tener que hacer en other 443 00:19:57,690 --> 00:19:59,049 Y ya está, other 444 00:19:59,049 --> 00:20:02,509 En java 445 00:20:02,509 --> 00:20:04,089 Java 446 00:20:04,089 --> 00:20:05,869 Un proyecto normal y corriente 447 00:20:05,869 --> 00:20:07,430 Un proyecto java project normal 448 00:20:07,430 --> 00:20:09,549 Para hacerlo de las clases internas 449 00:20:09,549 --> 00:20:10,890 Para recordarlo 450 00:20:10,890 --> 00:20:15,289 Vale 451 00:20:15,289 --> 00:20:19,910 Recordatorio 452 00:20:19,910 --> 00:20:21,609 Recordatorio 453 00:20:21,609 --> 00:20:25,190 Clases internas 454 00:20:25,190 --> 00:20:32,450 Vale, y con esto, interpretando un poquito 455 00:20:32,450 --> 00:20:33,569 Luego esas clases 456 00:20:33,569 --> 00:20:35,970 Y mencionando unas cuantas cosas más 457 00:20:35,970 --> 00:20:37,769 Los XML los vamos a dar por 458 00:20:37,769 --> 00:20:39,029 Ventilados 459 00:20:39,029 --> 00:20:46,750 Vale, está en la perspectiva 460 00:20:46,750 --> 00:20:48,049 De aplicaciones 461 00:20:48,049 --> 00:20:50,329 Web, empresariales 462 00:20:50,329 --> 00:20:52,890 Entonces me dice, ¿quieres que te hable la perspectiva normalita 463 00:20:52,890 --> 00:20:54,329 Y corrientita de toda la vida? 464 00:20:54,509 --> 00:21:08,950 Pues sí, esta perspectiva ya es la igualita del otro eclipse, es la perspectiva que se olvida de aplicaciones empresariales, me ha quitado el icono de explorador web, de hecho, y me ha quitado un montón de cosas. 465 00:21:08,950 --> 00:21:11,190 Bueno, pues a ver 466 00:21:11,190 --> 00:21:21,430 Vale, pues por ejemplo 467 00:21:21,430 --> 00:21:23,609 Vamos a hacer una clase normal y corriente 468 00:21:23,609 --> 00:21:25,930 Una clase que sea 469 00:21:25,930 --> 00:21:26,829 La clase 470 00:21:26,829 --> 00:21:33,089 Instituto, por ejemplo 471 00:21:33,089 --> 00:21:34,029 Yo que sé 472 00:21:34,029 --> 00:21:44,500 Vale, entonces 473 00:21:44,500 --> 00:21:46,660 Esta clase 474 00:21:46,660 --> 00:21:48,240 Pues puede tener sus propiedades 475 00:21:48,240 --> 00:21:49,119 Como siempre 476 00:21:49,119 --> 00:21:55,339 Y ahora podría tener una propiedad más 477 00:21:55,339 --> 00:21:56,480 Que fuera 478 00:21:56,480 --> 00:21:58,900 la secretaría, que a su vez 479 00:21:58,900 --> 00:21:59,640 tiene, ¿verdad? 480 00:22:02,819 --> 00:22:04,940 Podría tener una propiedad secretaría 481 00:22:04,940 --> 00:22:06,599 con todos los 482 00:22:06,599 --> 00:22:08,299 detalles de la secretaría, para lo cual 483 00:22:08,299 --> 00:22:10,319 habría una clase aparte que fuera 484 00:22:10,319 --> 00:22:12,680 clase secretaría, como siempre. Hemos diseñado, 485 00:22:12,759 --> 00:22:14,819 ¿verdad? Entonces, bueno, ese diseño 486 00:22:14,819 --> 00:22:16,420 es relativamente habitual, es el que 487 00:22:16,420 --> 00:22:18,500 estamos acostumbrados. Una clase por 488 00:22:18,500 --> 00:22:20,440 entidad y ya está. Y luego 489 00:22:20,440 --> 00:22:22,420 relaciones entre ellas, porque unas contienen 490 00:22:22,420 --> 00:22:24,160 a otras. Diseño el que estamos acostumbrados. 491 00:22:25,099 --> 00:22:25,579 Pero bueno, 492 00:22:25,579 --> 00:22:28,339 ese diseño implica 493 00:22:28,339 --> 00:22:31,019 que pueden existir secretarías 494 00:22:31,019 --> 00:22:32,779 por el mundo sin que haya 495 00:22:32,779 --> 00:22:33,480 institutos 496 00:22:33,480 --> 00:22:36,059 en función de 497 00:22:36,059 --> 00:22:38,660 cómo programe uno la aplicación 498 00:22:38,660 --> 00:22:40,099 podría darse una situación 499 00:22:40,099 --> 00:22:42,960 que a lo mejor no tiene mucho sentido 500 00:22:42,960 --> 00:22:45,019 que es que existan objetos secretaría 501 00:22:45,019 --> 00:22:46,660 a los que se le puedan pedir 502 00:22:46,660 --> 00:22:47,640 funcionalidades 503 00:22:47,640 --> 00:22:51,019 pero es una estupidez 504 00:22:51,019 --> 00:22:52,839 que eso se dé porque no puede existir 505 00:22:52,839 --> 00:22:54,759 una secretaría en medio de la calle si no está dentro 506 00:22:54,759 --> 00:22:56,779 de un instituto, claro 507 00:22:56,779 --> 00:22:59,039 entonces si queremos recoger eso 508 00:22:59,039 --> 00:23:01,099 para que nuestra aplicación 509 00:23:01,099 --> 00:23:03,200 de alguna manera se adapte 510 00:23:03,200 --> 00:23:05,079 a esa situación y por tanto 511 00:23:05,079 --> 00:23:06,759 programemos en consecuencia 512 00:23:06,759 --> 00:23:08,779 y se nos faciliten ciertas cosas 513 00:23:08,779 --> 00:23:10,960 vale, pues en lugar 514 00:23:10,960 --> 00:23:13,420 de programarlo así como una referencia 515 00:23:13,420 --> 00:23:14,799 a una clase aparte 516 00:23:14,799 --> 00:23:17,160 podemos hacerlo 517 00:23:17,160 --> 00:23:25,569 como clase interna 518 00:23:25,569 --> 00:23:27,509 claro, pero tendría, y que significa 519 00:23:27,509 --> 00:23:29,089 requerir un instituto, buscar 520 00:23:29,089 --> 00:23:31,109 los objetos existentes 521 00:23:31,109 --> 00:23:34,109 Claro, pero 522 00:23:34,109 --> 00:23:38,970 ¿Dónde sacas el instituto? 523 00:23:39,250 --> 00:23:40,970 Se lo pasas al constructor por parámetros 524 00:23:40,970 --> 00:23:42,690 El constructor de secretaría necesite 525 00:23:42,690 --> 00:23:44,089 Obligatoriamente que le pases un instituto 526 00:23:44,089 --> 00:23:52,930 Sí, bueno, puedes hacer muchas posibilidades 527 00:23:52,930 --> 00:23:53,650 Efectivamente 528 00:23:53,650 --> 00:23:56,750 Vale, entonces, pues nada, esto me da igual 529 00:23:56,750 --> 00:23:57,910 Pues tendría su 530 00:23:57,910 --> 00:24:01,190 Yo que sé 531 00:24:01,190 --> 00:24:03,170 El director de la secretaría 532 00:24:03,170 --> 00:24:04,890 Y cualquier chorrada y ya está 533 00:24:04,890 --> 00:24:10,099 Bueno, no merece la pena 534 00:24:10,099 --> 00:24:11,380 Ni Getter ni Setter ni nada 535 00:24:11,380 --> 00:24:12,839 Porque para lo que vamos a repasar 536 00:24:12,839 --> 00:24:16,079 Quito esto, no pongo Getter y Setter 537 00:24:16,079 --> 00:24:17,400 Porque para lo que vamos a repasar 538 00:24:17,400 --> 00:24:19,059 Vale, pues entonces 539 00:24:19,059 --> 00:24:22,140 Esta es una clase interna, una clase que va dentro de otra 540 00:24:22,140 --> 00:24:23,880 Luego dentro de una clase 541 00:24:23,880 --> 00:24:25,539 Ahora ya hay cuatro cosas 542 00:24:25,539 --> 00:24:26,559 Que puede haber 543 00:24:26,559 --> 00:24:28,579 Propiedades 544 00:24:28,579 --> 00:24:30,640 Métodos 545 00:24:30,640 --> 00:24:35,720 bloque static y clases internas, ¿vale? 546 00:24:35,740 --> 00:24:37,119 Esas son las cuatro cosas que puede haber. 547 00:24:37,859 --> 00:24:41,599 Recordad que el bloque static es esto. 548 00:24:42,920 --> 00:24:48,599 El bloque static es un bloque con static delante 549 00:24:48,599 --> 00:24:52,339 donde aquí puede haber sentencias 550 00:24:52,339 --> 00:24:56,720 que trabajen solo con propiedades estáticas, ¿vale? 551 00:24:56,759 --> 00:24:59,720 Por ejemplo, a lo mejor aquí yo tengo una propiedad estática 552 00:24:59,720 --> 00:25:10,650 que afecta a todos los institutos, que es la comunidad, comunidad autónoma. 553 00:25:11,410 --> 00:25:20,210 Entonces, en mi aplicación, todos los institutos pertenecen a la misma comunidad. 554 00:25:20,789 --> 00:25:23,930 Pero bueno, esta aplicación puede funcionar en diferentes comunidades autónomas, 555 00:25:24,009 --> 00:25:25,529 con lo cual esto lo pongo como variable. 556 00:25:25,970 --> 00:25:30,509 Pero claro, lo pongo como variable estática, porque todos van a pertenecer a la misma. 557 00:25:30,509 --> 00:25:35,990 Aunque en función de donde se arranque la aplicación el contenido pueda ser distinto 558 00:25:35,990 --> 00:25:38,589 Pero común para todos los institutos 559 00:25:38,589 --> 00:25:43,849 Entonces en el bloque estático, pues aquí puede haber sentencias y cualquier cosa 560 00:25:43,849 --> 00:25:56,359 Puede haber cualquier código que afecte a las variables estáticas 561 00:25:56,359 --> 00:25:59,319 Entonces, ¿cuándo se ejecuta el bloque estático? 562 00:25:59,799 --> 00:26:02,359 La primera vez que se hace referencia a esa clase 563 00:26:02,359 --> 00:26:04,940 Bien para instanciar un objeto instituto 564 00:26:04,940 --> 00:26:08,539 Bien para acceder a alguna de sus propiedades estáticas 565 00:26:08,539 --> 00:26:13,420 En cuanto se haga referencia a esta clase por primera vez 566 00:26:13,420 --> 00:26:17,119 Automáticamente aparecen las variables estáticas y se ejecuta esto 567 00:26:17,119 --> 00:26:18,660 Bueno, esto era por completar 568 00:26:18,660 --> 00:26:21,380 Ahora ya sabemos, después de dos años por fin 569 00:26:21,380 --> 00:26:23,339 Las cuatro cosas que puede haber dentro de una clase 570 00:26:23,339 --> 00:26:26,799 Vale, pero ahora la que nos interesa aquí es la clase interna 571 00:26:26,799 --> 00:26:31,319 Entonces, diseñar la secretaría como clase interna 572 00:26:31,319 --> 00:26:33,160 Nos permite ahora en nuestro main 573 00:26:33,160 --> 00:26:36,220 Yo tengo ya mi aplicación 574 00:26:36,220 --> 00:26:41,160 Y ahora pues me hago 575 00:26:41,160 --> 00:26:42,420 Un instituto 576 00:26:42,420 --> 00:26:55,819 Vale, al instituto le puedo poner 577 00:26:55,819 --> 00:26:56,359 Su 578 00:26:56,359 --> 00:26:59,700 Nombre, así directamente 579 00:26:59,700 --> 00:27:01,740 Ver este acceso 580 00:27:01,740 --> 00:27:02,980 Así ya hace daño 581 00:27:02,980 --> 00:27:04,559 Al corazón 582 00:27:04,559 --> 00:27:06,900 Ya no acostumbra uno a los getty eso 583 00:27:06,900 --> 00:27:08,039 Ver un acceso así 584 00:27:08,039 --> 00:27:10,339 Pero bueno, vamos a ahorrarnos tiempo 585 00:27:10,339 --> 00:27:13,099 Instituto tenía nombre 586 00:27:13,099 --> 00:27:14,519 ¿No? Porque me dice 587 00:27:14,519 --> 00:27:19,220 instituto.nombre 588 00:27:19,220 --> 00:27:20,740 pues igual a lo que sea 589 00:27:20,740 --> 00:27:27,319 vale, y ahora yo voy a instanciar 590 00:27:27,319 --> 00:27:29,500 una secretaría, efectivamente la secretaría 591 00:27:29,500 --> 00:27:31,180 no la puedo instanciar por libre 592 00:27:31,180 --> 00:27:32,980 no puedo hacer esto 593 00:27:32,980 --> 00:27:37,430 con el 594 00:27:37,430 --> 00:27:40,150 otro modelo de diseño que la clase 595 00:27:40,150 --> 00:27:41,930 secretaría forma parte del modelo 596 00:27:41,930 --> 00:27:43,970 como entidad aparte, yo podría 597 00:27:43,970 --> 00:27:44,650 hacer esto 598 00:27:44,650 --> 00:27:48,049 entonces, esto a lo mejor podría 599 00:27:48,049 --> 00:27:50,009 generar en una aplicación muy 600 00:27:50,009 --> 00:27:52,029 gordota que se va ampliando, poniendo 601 00:27:52,029 --> 00:27:54,089 parches y parches, el hecho 602 00:27:54,089 --> 00:27:55,450 de que esto se pueda hacer 603 00:27:55,450 --> 00:27:58,269 podría generar un efecto secundario 604 00:27:58,269 --> 00:27:59,869 indeseado, ¿vale? 605 00:27:59,869 --> 00:28:01,730 Entonces en nuestras aplicaciones queremos que tengan 606 00:28:01,730 --> 00:28:03,730 los mínimos efectos secundarios indeseados 607 00:28:03,730 --> 00:28:05,910 entonces que exista una secretaría ahí suelta 608 00:28:05,910 --> 00:28:07,789 a lo mejor genera un 609 00:28:07,789 --> 00:28:09,769 funcionamiento incoherente 610 00:28:09,769 --> 00:28:11,650 de la aplicación, pues si yo 611 00:28:11,650 --> 00:28:13,769 la he 612 00:28:13,769 --> 00:28:17,789 declarado así como clase interna 613 00:28:17,789 --> 00:28:19,970 en lugar de como propiedad y clase aparte 614 00:28:19,970 --> 00:28:28,589 solamente puedo instanciar una secretaría asociada a un instituto, ¿vale? 615 00:28:29,809 --> 00:28:32,309 Solamente asociada a un instituto. 616 00:28:32,970 --> 00:28:36,410 Tengo que tener un objeto instituto ya creado 617 00:28:36,410 --> 00:28:40,690 y una vez que tengo un objeto instituto ya creado puedo instanciar una secretaría. 618 00:28:41,269 --> 00:28:45,769 Y este objeto automáticamente, aparte de existir, está vinculado a este instituto. 619 00:28:45,769 --> 00:28:48,809 Lo que pasa es que el nombre de la clase 620 00:28:48,809 --> 00:28:52,059 Perdón, perdón 621 00:28:52,059 --> 00:28:54,039 No quiero que lo haga con in porque no se ve bien 622 00:28:54,039 --> 00:28:56,480 El nombre de la clase interna 623 00:28:56,480 --> 00:28:58,160 Cambia, el nombre de la clase interna 624 00:28:58,160 --> 00:28:58,920 Ahora es compuesto 625 00:28:58,920 --> 00:29:02,000 ¿Vale? Una clase interna 626 00:29:02,000 --> 00:29:04,220 Su nombre es el suyo 627 00:29:04,220 --> 00:29:05,619 Más el de la 628 00:29:05,619 --> 00:29:08,359 Superclase, no, porque no hereda de ella 629 00:29:08,359 --> 00:29:09,819 Más el de la clase que lo contiene 630 00:29:09,819 --> 00:29:19,470 Y secretaría podría tener otra clase interna 631 00:29:19,470 --> 00:29:21,210 secretaría podría tener aquí otra clase 632 00:29:21,210 --> 00:29:23,529 dentro de la secretaría podría tener 633 00:29:23,529 --> 00:29:25,170 una clase directores 634 00:29:25,170 --> 00:29:27,410 yo lo he hecho aquí como string, pero podría haber 635 00:29:27,410 --> 00:29:29,210 quitado eso y haber hecho una clase interna director 636 00:29:29,210 --> 00:29:30,950 para que no pueda haber directores sueltos 637 00:29:30,950 --> 00:29:33,069 tengan que existir una secretaría 638 00:29:33,069 --> 00:29:34,990 dentro de un instituto, o sea eso 639 00:29:34,990 --> 00:29:37,730 las clases internas se pueden anidar hasta el infinito 640 00:29:37,730 --> 00:29:39,430 pero como de costumbre no queremos 641 00:29:39,430 --> 00:29:40,849 hacer aplicaciones para liar 642 00:29:40,849 --> 00:29:43,309 o para lucirnos, sino 643 00:29:43,309 --> 00:29:45,450 para que sean lo más entendibles posibles 644 00:29:45,450 --> 00:29:47,109 vale, pues entonces 645 00:29:47,109 --> 00:29:49,710 en cuanto a las clases internas normales y corrientes 646 00:29:49,710 --> 00:29:51,470 no estáticas, ya está 647 00:29:51,470 --> 00:29:52,650 no hay más que saber 648 00:29:52,650 --> 00:29:54,970 uno las puede usar 649 00:29:54,970 --> 00:29:56,670 en las situaciones en las que quiera 650 00:29:56,670 --> 00:29:59,670 evitar que proliferen objetos 651 00:29:59,670 --> 00:30:03,529 que no tienen sentido que existan 652 00:30:03,529 --> 00:30:05,029 si no está el que los contiene 653 00:30:05,029 --> 00:30:06,609 entonces 654 00:30:06,609 --> 00:30:08,009 aquí 655 00:30:08,009 --> 00:30:11,490 esto tiene sentido 656 00:30:11,490 --> 00:30:13,329 tiene sentido 657 00:30:13,329 --> 00:30:15,809 porque no tiene sentido que existan universidades 658 00:30:15,809 --> 00:30:18,029 perdón, que existan facultades 659 00:30:18,029 --> 00:30:19,230 si no existe una universidad 660 00:30:19,230 --> 00:30:21,650 y solamente tiene sentido que existan 661 00:30:21,650 --> 00:30:23,390 carreras si existe una facultad 662 00:30:23,390 --> 00:30:25,309 y solo hay estudiantes y existe una carrera 663 00:30:25,309 --> 00:30:27,670 entonces aquí tiene todo el sentido del mundo 664 00:30:27,670 --> 00:30:29,529 por eso por defecto se hace como clases 665 00:30:29,529 --> 00:30:30,309 internas 666 00:30:30,309 --> 00:30:32,710 vale, pero 667 00:30:32,710 --> 00:30:35,690 y el modificador 668 00:30:35,690 --> 00:30:37,630 static delante 669 00:30:37,630 --> 00:30:39,210 ¿qué significa? 670 00:30:40,089 --> 00:30:41,089 vale, pues la clase 671 00:30:41,089 --> 00:30:42,829 una clase puede ser estática 672 00:30:42,829 --> 00:30:44,529 una clase interna 673 00:30:44,529 --> 00:30:52,230 puede ser estática, por ejemplo, yo me puedo hacer aquí una clase interna estática 674 00:30:52,230 --> 00:31:01,950 y esta clase interna estática, ahora no se me ocurre un concepto, 675 00:31:03,509 --> 00:31:09,730 ¿para qué me sirve esta clase? 676 00:31:09,869 --> 00:31:12,849 Esta clase interna, si yo le pongo el modificador static, 677 00:31:12,849 --> 00:31:22,390 es una clase a través de la cual puedo yo acceder solamente al contexto estático de la clase de arriba. 678 00:31:23,230 --> 00:31:27,990 Es decir, solamente puedo acceder al contexto estático de instituto. 679 00:31:28,890 --> 00:31:37,210 Entonces, esta clase es como si mi clase instituto tuviera una propiedad estática, 680 00:31:37,210 --> 00:31:41,309 pero una propiedad estática que además puede hacer cosas. 681 00:31:42,849 --> 00:31:49,349 ¿Vale? Puede hacer, por ejemplo, esta es una propiedad estática, sin más, ¿verdad? 682 00:31:49,490 --> 00:31:51,470 Una propiedad estática que es de clase stream. 683 00:31:51,470 --> 00:31:54,869 Y comunidad, pues sí, puede llamar a los métodos de stream. 684 00:31:55,950 --> 00:32:09,710 ¿Vale? Entonces, yo podría haber hecho aquí, por ejemplo, cosas de la comunidad, cosas específicas de la comunidad. 685 00:32:09,710 --> 00:32:15,700 Entonces, automáticamente 686 00:32:15,700 --> 00:32:19,839 se crea, cuando aparezca un instituto 687 00:32:19,839 --> 00:32:23,160 la primera vez que a un instituto se hace referencia 688 00:32:23,160 --> 00:32:25,079 como se crea todo su contexto estático 689 00:32:25,079 --> 00:32:28,759 se va a crear esto y se va a ejecutar el bloque estático 690 00:32:28,759 --> 00:32:31,599 también se van a crear instancias 691 00:32:31,599 --> 00:32:33,700 de sus clases internas estáticas 692 00:32:33,700 --> 00:32:35,420 también se van a crear instancias de esto 693 00:32:35,420 --> 00:32:38,240 igual que se ha creado instancia de esto 694 00:32:38,240 --> 00:32:39,579 se van a crear instancias de esto 695 00:32:39,579 --> 00:32:45,519 Y aquí dentro yo puedo hacer cualquier cosa 696 00:32:45,519 --> 00:32:48,200 Pues cualquier método 697 00:32:48,200 --> 00:32:52,160 Que use las variables estáticas de la clase 698 00:32:52,160 --> 00:32:59,240 Por ejemplo, cambia comunidad 699 00:32:59,240 --> 00:33:04,980 Y le paso aquí un string con la nueva comunidad 700 00:33:04,980 --> 00:33:13,380 Y aquí yo puedo acceder a la variable estática 701 00:33:13,380 --> 00:33:14,960 Comunidad 702 00:33:14,960 --> 00:33:19,460 Igual a nueva 703 00:33:19,460 --> 00:33:21,759 Comunidad 704 00:33:21,759 --> 00:33:23,359 ¿Vale? 705 00:33:24,380 --> 00:33:26,079 Entonces a través de esta clase 706 00:33:26,079 --> 00:33:27,700 Estática interna 707 00:33:27,700 --> 00:33:29,619 Puedo acceder al contexto estático de arriba 708 00:33:29,619 --> 00:33:34,480 Entonces recojo dentro de la clase 709 00:33:34,480 --> 00:33:36,039 Recojo dentro de la clase 710 00:33:36,039 --> 00:33:36,940 Muchas cosas 711 00:33:36,940 --> 00:33:40,839 Sin necesidad de ponerlo como clases aparte 712 00:33:40,839 --> 00:33:42,119 Esta es la idea 713 00:33:42,119 --> 00:33:43,240 De las clases internas 714 00:33:43,240 --> 00:33:45,960 Sobre todo la idea es que 715 00:33:45,960 --> 00:33:51,779 Bueno, que no os olvidéis de que están, por si veis diseños hechos así, ¿vale? 716 00:33:52,240 --> 00:33:59,700 Y ya sabemos que pueden ser no estáticas, con lo cual hay que instanciarlas específicamente, 717 00:34:00,099 --> 00:34:05,019 hay que instanciarlas específicamente asociadas a un objeto que tiene que existir, como hemos hecho aquí, 718 00:34:05,019 --> 00:34:08,900 y pueden ser estáticas, ¿vale? 719 00:34:09,900 --> 00:34:14,500 Si son estáticas, no hay que instanciarlas específicamente, 720 00:34:14,500 --> 00:34:20,820 Por ejemplo, aquí vamos a cambiar la comunidad 721 00:34:20,820 --> 00:34:27,820 Aquí sería instituto.cosasdelacomunidad 722 00:34:27,820 --> 00:34:33,679 Instituto, el nombre de la clase sigue siendo este, cosasdelacomunidad 723 00:34:34,679 --> 00:34:39,300 ¿Vale? Entonces, aquí 724 00:34:39,300 --> 00:34:50,320 Este no necesita que exista un instituto 725 00:34:50,320 --> 00:34:52,880 Esta la instancio a sí misma por libre 726 00:34:52,880 --> 00:34:54,079 No necesita que exista 727 00:34:54,079 --> 00:34:56,519 Esta la instancio así 728 00:34:56,519 --> 00:35:01,760 ¿Vale? El instituto podría no existir 729 00:35:01,760 --> 00:35:03,880 Podría no existir 730 00:35:03,880 --> 00:35:04,599 El instituto 731 00:35:04,599 --> 00:35:10,030 Podría yo no haber creado ningún instituto 732 00:35:10,030 --> 00:35:12,409 Sin embargo 733 00:35:12,409 --> 00:35:14,250 Esto puede existir 734 00:35:14,250 --> 00:35:17,630 Esto puede existir 735 00:35:17,630 --> 00:35:20,150 Y yo puedo pues cambiar la comunidad 736 00:35:20,150 --> 00:35:21,969 Sin necesidad de que exista ningún instituto 737 00:35:22,650 --> 00:35:31,170 ¿Vale? 738 00:35:31,170 --> 00:35:31,250 ¿Vale? 739 00:35:33,690 --> 00:35:55,739 Claro, porque todos los institutos, efectivamente, claro, todos los institutos comparten todo lo estático. 740 00:35:56,659 --> 00:35:59,260 Esta propiedad y esta también. 741 00:36:00,539 --> 00:36:36,420 Vamos a instituto.comunidad Valencia, ¿vale? 742 00:36:36,420 --> 00:37:07,489 Entonces, las clases estáticas es una manera de recoger dentro de la clase cosas que tú puedes querer hacer con el contexto estático, con las variables estáticas y ya está, ¿vale? En lugar de hacer una clase aparte que recoja todo eso o hacerlo como métodos aquí dentro, lo podrías hacer como métodos aquí dentro, ¿no? Cambiar comunidad, pero claro, entonces a lo mejor el cambiar comunidad, hacerlo como método estático dentro del instituto podría ser un diseño feo, 743 00:37:07,489 --> 00:37:30,969 Porque en realidad no es el instituto el que cambia la comunidad, o sea, son todos en global. Entonces, pues bueno, es una cuestión de diseño simplemente, no es que haya que hacer las cosas así. Entonces, meto yo dentro de una clase estática todo aquello que se refiere a tocar el contexto estático y parece como que está más recogido, más aparte y no está como métodos a la misma altura de los métodos propios de instituto. 744 00:37:30,969 --> 00:37:48,110 Los métodos propios de instituto deberían ser los que hacen cosas con el instituto, ¿vale? Y los métodos que hacen cosas con el contexto estático los puedo poner también ahí, por supuesto, dentro de la clase instituto que hemos hecho hasta ahora, o los puedo recoger dentro de una clase estática. Bueno, diferentes posibilidades de diseño, sin más. 745 00:37:48,110 --> 00:37:50,550 vale, pues 746 00:37:50,550 --> 00:37:52,510 ahora ya 747 00:37:52,510 --> 00:37:54,329 que tenemos lo de las clases internas 748 00:37:54,329 --> 00:37:56,489 recordado, porque no hay más historia que esto 749 00:37:56,489 --> 00:37:57,949 pues bueno 750 00:37:57,949 --> 00:37:59,869 ya entendemos esto un poco más 751 00:37:59,869 --> 00:38:01,929 entonces, ¿por qué las ha puesto 752 00:38:01,929 --> 00:38:04,210 estáticas? porque es que 753 00:38:04,210 --> 00:38:05,909 ninguna de estas clases internas 754 00:38:05,909 --> 00:38:07,809 accede, necesita usar 755 00:38:07,809 --> 00:38:09,869 ninguna de las propiedades de aquí 756 00:38:09,869 --> 00:38:11,690 es decir 757 00:38:11,690 --> 00:38:13,489 JAXB 758 00:38:13,489 --> 00:38:16,690 te crea una única universidad 759 00:38:16,690 --> 00:38:17,590 ¿vale? 760 00:38:18,110 --> 00:38:20,110 Te crea una única universidad. 761 00:38:20,210 --> 00:38:21,510 No hay muchas universidades. 762 00:38:22,230 --> 00:38:24,789 Entonces, todo se trabaja como estático. 763 00:38:25,550 --> 00:38:25,730 ¿Vale? 764 00:38:25,809 --> 00:38:28,309 Entonces, la clase facultades. 765 00:38:28,530 --> 00:38:32,150 La clase facultades, ¿dónde está declarada? 766 00:38:32,309 --> 00:38:32,710 Aquí. 767 00:38:33,789 --> 00:38:34,809 Está como estática. 768 00:38:34,909 --> 00:38:35,230 ¿Por qué? 769 00:38:35,829 --> 00:38:38,730 Porque no accede a ninguna propiedad de universidad. 770 00:38:38,949 --> 00:38:39,929 No la usa para nada. 771 00:38:40,050 --> 00:38:41,190 Ninguna propiedad de universidad. 772 00:38:41,789 --> 00:38:45,090 Entonces, vamos a quitarle todo esto para que se vea más claro. 773 00:38:45,090 --> 00:38:47,610 Hombre, son comentarios 774 00:38:47,610 --> 00:38:49,429 Que te explican solamente 775 00:38:49,429 --> 00:38:51,389 Cómo es el XML 776 00:38:51,389 --> 00:38:53,269 O sea, que mete ahí una 777 00:38:53,269 --> 00:39:34,940 Es que hay tanta clase interna 778 00:39:34,940 --> 00:39:38,400 Que en este ejemplito 779 00:39:38,400 --> 00:39:39,400 Pues cuesta verlo 780 00:39:39,400 --> 00:39:40,940 Porque es que es mucha clase interna 781 00:39:40,940 --> 00:39:43,400 Teníamos que haberlo hecho en un XSD más sencillo 782 00:39:44,679 --> 00:39:45,000 Para 783 00:39:45,000 --> 00:39:47,659 Para verlo mejor 784 00:39:47,659 --> 00:39:49,800 Porque aquí tenemos una cantidad de anidamiento 785 00:39:49,800 --> 00:39:51,059 Brutal 786 00:39:51,059 --> 00:39:53,599 Claro, hay un montón 787 00:39:53,599 --> 00:39:55,019 De clases internas, claro 788 00:39:55,019 --> 00:39:58,059 Entonces, si uno genera las clases con esto 789 00:39:58,059 --> 00:39:59,920 Pues vale, ya las tiene y funcionan 790 00:39:59,920 --> 00:40:02,260 Pero es que luego para construirlas 791 00:40:02,260 --> 00:40:03,599 Tiene que acordarse de que 792 00:40:03,599 --> 00:40:04,980 Cada vez que instancia 793 00:40:04,980 --> 00:40:08,380 Uno de los objetos de la universidad 794 00:40:08,380 --> 00:40:09,599 Pues los tiene que instanciar 795 00:40:09,599 --> 00:40:11,019 Con su nombre de clase interna 796 00:40:11,019 --> 00:40:12,219 Pero ya está 797 00:40:12,219 --> 00:40:14,219 No pasa nada 798 00:40:14,219 --> 00:40:19,989 Vamos a ver si podemos hacerlo rápidamente 799 00:40:19,989 --> 00:40:20,929 Sin volvernos locos 800 00:40:20,929 --> 00:40:23,989 Claro, entonces 801 00:40:23,989 --> 00:40:26,570 Vamos a hacer aquí un main 802 00:40:26,570 --> 00:40:37,179 Vamos a hacer aquí un main 803 00:40:37,179 --> 00:40:39,539 Y vamos a hacer un poco de 804 00:40:39,539 --> 00:40:41,340 Gimnasia 805 00:40:41,340 --> 00:40:44,900 A ver, nuestro xml 806 00:40:44,900 --> 00:40:46,980 Que nos va a ser más fácil verlo desde el 807 00:40:46,980 --> 00:40:48,360 xml 808 00:40:48,360 --> 00:40:51,280 Voy a generar 809 00:40:51,280 --> 00:40:53,099 Desde mi esquema 810 00:40:53,099 --> 00:40:54,559 Un xml de ejemplo 811 00:40:54,559 --> 00:40:56,639 Para 812 00:40:56,639 --> 00:41:01,320 Sí 813 00:41:01,320 --> 00:41:03,280 Porque así vamos a ver más claro 814 00:41:03,280 --> 00:41:05,340 Venga 815 00:41:05,340 --> 00:41:20,559 Venga, pues esto es un xml 816 00:41:20,559 --> 00:41:23,920 de ejemplo cualquiera, entonces lo más interno es, vamos a crear 817 00:41:23,920 --> 00:41:28,719 una materia cualquiera, pero claro, materia 818 00:41:28,719 --> 00:41:32,679 está dentro de materias, es que ni siquiera 819 00:41:32,679 --> 00:41:36,559 lo hace con envolvente, o sea, es que lo ha hecho la clase materias, que a su vez 820 00:41:36,559 --> 00:41:43,090 tiene dentro materia, entonces vamos a crear, mi main está 821 00:41:43,090 --> 00:41:48,480 aquí, no, este no era, mi main está 822 00:41:48,480 --> 00:41:49,679 aquí 823 00:41:49,679 --> 00:42:02,519 Vale, pues la clase materia está 824 00:42:02,519 --> 00:42:05,360 Dentro de universidad 825 00:42:05,360 --> 00:42:09,480 Que a su vez está en facultades 826 00:42:09,480 --> 00:42:13,780 Que facultades es una clase que solo sirve para tener una lista de facultad 827 00:42:13,780 --> 00:42:16,500 Es que ni hace envolvente ni hace nada además 828 00:42:16,500 --> 00:42:18,679 Facultad tiene carreras 829 00:42:18,679 --> 00:42:20,960 Carreras tiene carrera 830 00:42:20,960 --> 00:42:23,840 Carrera tiene estudiantes 831 00:42:23,840 --> 00:42:26,500 y estudiantes tiene estudiante 832 00:42:26,500 --> 00:42:28,579 y estudiante 833 00:42:28,579 --> 00:42:29,820 tiene materias 834 00:42:29,820 --> 00:42:31,539 y materia tiene materia 835 00:42:31,539 --> 00:42:34,420 esto es 836 00:42:34,420 --> 00:42:36,659 absurdo 837 00:42:36,659 --> 00:42:37,940 usar el plugin 838 00:42:37,940 --> 00:42:40,420 y dejarte, a ver, no es absurdo 839 00:42:40,420 --> 00:42:41,579 porque si lo haces solo 840 00:42:41,579 --> 00:42:44,260 para la parte del xml, pues ya veis que esto 841 00:42:44,260 --> 00:42:46,219 es ir tirando de puntito, completar y ya está 842 00:42:46,219 --> 00:42:47,739 pero un modelo de clases 843 00:42:47,739 --> 00:42:49,679 con tantas clases internas 844 00:42:49,679 --> 00:42:52,340 para otras cosas que no fuera para xml 845 00:42:52,340 --> 00:42:54,000 Pues si es que no lo generaríamos 846 00:42:54,000 --> 00:42:56,019 Vale, pues nos vamos a hacer una materia 847 00:42:56,019 --> 00:42:56,760 Que es 848 00:42:56,760 --> 00:43:00,750 New, madre mía 849 00:43:00,750 --> 00:43:02,769 No me digas que tengo que volver a escribir todo eso otra vez 850 00:43:02,769 --> 00:43:04,610 Tiene que haber alguna forma 851 00:43:04,610 --> 00:43:06,809 ¿Eh? 852 00:43:08,329 --> 00:43:09,010 Claro, pero 853 00:43:09,010 --> 00:43:10,329 Y no puedo usar el new instance 854 00:43:10,329 --> 00:43:12,510 Pero el new instance tengo que poner la clase otra vez 855 00:43:12,510 --> 00:43:14,550 Con lo cual no ahorro nada 856 00:43:14,550 --> 00:43:16,849 Entonces sí, venga, control c, control v 857 00:43:16,849 --> 00:43:18,110 Que barbaridad 858 00:43:18,110 --> 00:43:20,909 A ver, me puedo hacer el import, porque parecemos tontos 859 00:43:20,909 --> 00:43:22,150 Claro 860 00:43:22,150 --> 00:43:25,469 Porque el import también funciona 861 00:43:25,469 --> 00:43:27,530 Para todo esto 862 00:43:27,530 --> 00:43:30,130 También no solo con paquetes 863 00:43:30,130 --> 00:43:31,309 Sino con clases internas 864 00:43:31,309 --> 00:43:34,030 Es decir, yo puedo hacer un import 865 00:43:34,030 --> 00:43:37,250 Y aquí me importo 866 00:43:37,250 --> 00:43:40,289 Con .dam2 867 00:43:40,289 --> 00:43:42,429 .todoelchorizoeste 868 00:43:42,429 --> 00:43:43,730 De clases internas 869 00:43:43,730 --> 00:43:46,389 Materias, materia 870 00:43:46,389 --> 00:43:48,250 Con .dam2.model 871 00:43:48,250 --> 00:43:49,969 Model, efectivamente 872 00:43:49,969 --> 00:43:51,449 Me falta el model 873 00:43:51,449 --> 00:43:56,409 Vale, me hago el import 874 00:43:56,409 --> 00:43:57,929 Y no tengo que arrastrar eso todo el rato 875 00:43:57,929 --> 00:44:12,949 Pongo materia y se acabó 876 00:44:12,949 --> 00:44:14,050 Me hago materia 877 00:44:14,050 --> 00:44:17,309 ¿Cómo que no sabe a qué materia me refiero? 878 00:44:17,369 --> 00:44:18,090 ¿Me refiero a esta? 879 00:44:19,530 --> 00:44:20,409 No, no, no 880 00:44:20,409 --> 00:44:22,309 Es que si hubiera más materia sería 881 00:44:22,309 --> 00:44:24,610 ¿Es el nombre de la variable lo que lo distingue? 882 00:44:25,429 --> 00:44:25,929 Claro, es como 883 00:44:25,929 --> 00:44:31,480 Ah, que estuviera en otra línea 884 00:44:31,480 --> 00:44:32,980 De clases internas, en otro import 885 00:44:32,980 --> 00:44:35,360 Ah, bueno, ya claro, pero es que entonces no puedo hacer import 886 00:44:35,360 --> 00:44:38,820 Claro, si hubiera otra clase materia en otra ruta del import 887 00:44:38,820 --> 00:44:41,800 Él cogería la primera de todas siempre 888 00:44:41,800 --> 00:44:43,440 Entonces no podría hacerlo así 889 00:44:43,440 --> 00:44:44,360 ¿Vale? 890 00:44:44,960 --> 00:44:46,320 Pero claro, no es el caso 891 00:44:46,320 --> 00:44:50,059 Entonces, materia.setCódigo 892 00:44:50,059 --> 00:44:54,900 Pues esto no me acuerdo si era string o sería string, seguro 893 00:44:54,900 --> 00:44:57,199 setCódigo1 894 00:44:57,199 --> 00:45:01,480 Materia.setNombre 895 00:45:01,480 --> 00:45:03,599 Acceso a datos 896 00:45:05,360 --> 00:45:07,539 Materia.set 897 00:45:07,539 --> 00:45:09,880 Nota 898 00:45:09,880 --> 00:45:11,980 Un 10 899 00:45:11,980 --> 00:45:14,460 Pero lo tengo que convertir 900 00:45:14,460 --> 00:45:15,420 A big decimal 901 00:45:15,420 --> 00:45:18,400 Y esto 902 00:45:18,400 --> 00:45:20,360 Me dejará con el constructor 903 00:45:20,360 --> 00:45:22,059 Porque fijaos que 904 00:45:22,059 --> 00:45:23,239 El plugin 905 00:45:23,239 --> 00:45:26,199 En lugar de double 906 00:45:26,199 --> 00:45:28,280 Me lo ha puesto como big decimal 907 00:45:28,280 --> 00:45:29,760 Entonces 908 00:45:29,760 --> 00:45:34,099 No, el big decimal 909 00:45:34,099 --> 00:45:36,119 Ah bueno 910 00:45:36,119 --> 00:45:36,780 Import 911 00:45:36,800 --> 00:45:41,360 Ah, pues sí, puedo hacer un big décima a través de un double normal y corriente 912 00:45:41,360 --> 00:45:42,880 Vale, ya tengo la materia 913 00:45:42,880 --> 00:45:45,000 ¿La materia está dentro de qué? 914 00:45:45,079 --> 00:45:46,880 La materia está dentro de materias 915 00:45:46,880 --> 00:45:49,239 Entonces tendré que instanciar materias 916 00:45:49,239 --> 00:45:51,059 Copia y pega del libro 917 00:45:51,059 --> 00:45:53,920 Venga, esta es clase de velocidad 918 00:45:53,920 --> 00:46:03,389 Este tipo de trabajos es que es el pan nuestro de cada día 919 00:46:03,389 --> 00:46:04,710 Más que pensar 920 00:46:04,710 --> 00:46:07,889 Vale, ya tengo materias aquí importado 921 00:46:07,889 --> 00:46:11,789 De hecho, vamos ya a hacernos rápidamente 922 00:46:11,789 --> 00:46:14,150 Todos los import con todas las clases que vamos a usar 923 00:46:14,150 --> 00:46:15,230 Para no volvernos locos 924 00:46:15,230 --> 00:46:18,889 Estudiante, ya la tengo 925 00:46:18,889 --> 00:46:21,489 Ala, otro import 926 00:46:21,489 --> 00:46:25,610 Estudiantes, ya lo tengo 927 00:46:25,610 --> 00:46:28,670 Otro, carrera 928 00:46:28,670 --> 00:46:37,750 Que bonito, de verdad 929 00:46:37,750 --> 00:46:45,420 Pues en situaciones de estas os veréis 930 00:46:45,420 --> 00:46:46,300 Y cosas más raras 931 00:46:46,300 --> 00:46:48,179 Y el mundo del desarrollador es 932 00:46:48,179 --> 00:46:50,780 Una cosa extraordinaria 933 00:46:50,780 --> 00:46:57,099 Sí, ¿verdad? 934 00:47:00,429 --> 00:47:00,949 Universidad 935 00:47:00,949 --> 00:47:06,920 ¿Ya las tengo todas? 936 00:47:07,380 --> 00:47:09,340 Sí, ya tenemos la escalera perfecta 937 00:47:09,340 --> 00:47:12,139 Universidad la tengo duplicada 938 00:47:12,139 --> 00:47:13,019 Vale, la voy a quitar 939 00:47:13,019 --> 00:47:14,659 Para que esté dentro de la escalera 940 00:47:14,659 --> 00:47:18,780 Ay, qué bonito 941 00:47:18,780 --> 00:47:21,579 Vale, pues ahora ya 942 00:47:21,579 --> 00:47:23,139 Ahora ya nos hacemos 943 00:47:23,139 --> 00:47:25,099 Materias 944 00:47:25,099 --> 00:47:28,860 Igual a new 945 00:47:28,860 --> 00:47:30,719 Materias 946 00:47:30,719 --> 00:47:32,079 Y ahora 947 00:47:32,079 --> 00:47:34,900 A materias punto 948 00:47:34,900 --> 00:47:36,980 Get materias 949 00:47:36,980 --> 00:47:38,159 Punto add 950 00:47:38,159 --> 00:47:40,420 Materia, ojo 951 00:47:40,420 --> 00:47:43,639 Habrá hecho el plugin la instanciación 952 00:47:43,639 --> 00:47:45,420 Por defecto para que no la liemos 953 00:47:45,420 --> 00:47:47,599 Con el null pointer, pues seguro que no 954 00:47:47,599 --> 00:47:49,539 Pero yo que sé, bueno, digo seguro 955 00:47:49,539 --> 00:47:50,440 Por decir, igual sí 956 00:47:50,440 --> 00:47:52,019 Vamos a ver 957 00:47:52,019 --> 00:47:54,420 Vamos a ver 958 00:47:54,420 --> 00:47:55,280 Cómo ha hecho 959 00:47:55,280 --> 00:47:57,940 Mal 960 00:47:57,940 --> 00:48:00,679 Vámonos a 961 00:48:00,679 --> 00:48:02,800 Materias, a ver cómo ha hecho materia 962 00:48:02,800 --> 00:48:07,929 Vamos, vamos, vamos 963 00:48:07,929 --> 00:48:08,690 Vamos 964 00:48:08,690 --> 00:48:11,409 Va, no, me pasa, ah sí 965 00:48:11,409 --> 00:48:12,949 Es la última de todas, claro 966 00:48:12,949 --> 00:48:15,829 Venga, vamos, vamos 967 00:48:15,829 --> 00:48:16,570 Vamos, vamos 968 00:48:16,570 --> 00:48:19,829 Materias, vale, pero yo veo la propiedad 969 00:48:19,829 --> 00:48:53,769 Universidad, facultades, no, estoy en el estudiante, aquí, vale, entonces, pues esta lista no la he instanciado por defecto, podría ser que el get fuera listo y diera, si es null, instánciame una lista nueva, pero no creo, ah, mira, sí, vale, es una construcción habitual realmente en muchos frameworks, que si es null, te lo instancie, con lo cual no vamos a tener problema en el null pointer exception. 970 00:48:53,989 --> 00:48:55,329 Vale 971 00:48:55,329 --> 00:48:57,650 Mira que bien 972 00:48:57,650 --> 00:48:58,469 Pues hala, ya está 973 00:48:58,469 --> 00:49:01,070 Ahora, ya tenemos la materia 974 00:49:01,070 --> 00:49:02,750 Ahora hay que crear el estudiante 975 00:49:02,750 --> 00:49:04,469 Y ponerle las tres cosas 976 00:49:04,469 --> 00:49:06,429 No pasa nada, esto lo hacemos a toda leche 977 00:49:06,429 --> 00:49:11,730 Estudiante 978 00:49:11,730 --> 00:49:20,599 Al estudiante 979 00:49:20,599 --> 00:49:21,480 Edad 980 00:49:21,480 --> 00:49:23,300 23 981 00:49:23,300 --> 00:49:29,900 E-mail 982 00:49:29,900 --> 00:49:32,119 Cualquiera 983 00:49:32,119 --> 00:49:38,500 Y de tres 984 00:49:38,500 --> 00:49:45,190 Materias 985 00:49:45,190 --> 00:49:46,829 Pues la lista que acabamos de hacer 986 00:49:46,829 --> 00:49:52,739 Y nombre del estudiante 987 00:49:52,739 --> 00:49:53,820 Juanito 988 00:49:53,820 --> 00:49:55,460 Ala 989 00:49:55,460 --> 00:49:56,860 Venga 990 00:49:56,860 --> 00:49:59,559 Es que Pepitos no tenemos ninguno 991 00:49:59,559 --> 00:50:01,960 Ah bueno, algún José hay, no hay ningún José en clase 992 00:50:01,960 --> 00:50:04,500 Ah bueno, pues Juan Pepito 993 00:50:04,500 --> 00:50:08,659 Vale, ya tenemos al estudiante 994 00:50:08,659 --> 00:50:10,380 El estudiante va metido 995 00:50:10,380 --> 00:50:12,099 Dentro de una lista de estudiantes 996 00:50:12,099 --> 00:50:13,519 ¿Verdad? Creo 997 00:50:13,519 --> 00:50:15,340 Estudiantes 998 00:50:15,340 --> 00:50:18,360 Estudiantes 999 00:50:18,360 --> 00:50:19,940 Lo ha metido dentro de una lista 1000 00:50:19,940 --> 00:50:21,599 Todo esto por no hacer el graper 1001 00:50:21,599 --> 00:50:23,719 Así de vago 1002 00:50:23,719 --> 00:50:26,739 Ha sido 1003 00:50:26,739 --> 00:50:30,539 Y ahora a estudiantes.get 1004 00:50:30,539 --> 00:50:31,619 Ni lo miramos 1005 00:50:31,619 --> 00:50:33,219 Porque si ya en las materias 1006 00:50:33,219 --> 00:50:35,199 Ha hecho el get para que te instancie 1007 00:50:35,199 --> 00:50:37,280 Si no tiene nada, seguro que aquí también lo ha hecho 1008 00:50:37,280 --> 00:50:39,239 Así que 1009 00:50:39,239 --> 00:50:41,980 Ya tenemos estudiantes 1010 00:50:41,980 --> 00:50:44,539 Y ahora 1011 00:50:44,539 --> 00:50:46,840 Esta lista de estudiantes estaba en la carrera 1012 00:50:46,840 --> 00:50:49,000 Luego nos falta una carrera 1013 00:50:49,000 --> 00:50:57,219 Vale 1014 00:50:57,219 --> 00:50:59,440 La carrera tiene 1015 00:50:59,440 --> 00:51:01,780 Un código 1016 00:51:01,780 --> 00:51:03,380 Bueno, un departamento 1017 00:51:03,380 --> 00:51:04,320 Bla, bla, bla 1018 00:51:04,320 --> 00:51:09,840 Tiene un código 1019 00:51:09,840 --> 00:51:11,780 Bla, bla, bla 1020 00:51:11,780 --> 00:51:18,150 Tiene unos estudiantes que son los que acabamos de hacer 1021 00:51:18,150 --> 00:51:22,940 Y tiene un nombre 1022 00:51:22,940 --> 00:51:24,460 Carrera de mates 1023 00:51:24,460 --> 00:51:28,239 Y la carrera está en la facultad 1024 00:51:28,239 --> 00:51:31,579 Ah, perdón, jolines 1025 00:51:31,579 --> 00:51:32,460 De verdad 1026 00:51:32,460 --> 00:51:36,599 Ah, teníamos que haber cogido otro esquema 1027 00:51:36,599 --> 00:51:38,139 Esto no puede ser 1028 00:51:38,139 --> 00:51:41,280 Carreras 1029 00:51:41,280 --> 00:51:48,719 Y ahora ya sí 1030 00:51:48,719 --> 00:51:52,159 Cars.get.add 1031 00:51:52,159 --> 00:51:53,739 Carrera que acabamos de hacer 1032 00:51:53,739 --> 00:52:00,400 Y ahora ya sí que las carreras están en la facultad 1033 00:52:00,400 --> 00:52:11,179 Y la facultad tiene un nombre 1034 00:52:11,179 --> 00:52:12,920 Pues la facultad de mates 1035 00:52:12,920 --> 00:52:16,619 Y tiene unas carreras que acabamos de hacer 1036 00:52:16,619 --> 00:52:24,650 Perdón, set carreras 1037 00:52:24,650 --> 00:52:25,789 Punto set 1038 00:52:25,789 --> 00:52:28,989 Carreras, estas carreras que acabamos de hacer 1039 00:52:28,989 --> 00:52:30,110 Y ahora ya 1040 00:52:30,110 --> 00:52:32,949 Esto está en las facultades 1041 00:52:32,949 --> 00:52:44,929 Y en las facultades 1042 00:52:44,929 --> 00:52:46,690 Tiene una lista de facultades 1043 00:52:46,690 --> 00:52:48,130 A la que le añadimos 1044 00:52:48,130 --> 00:52:49,769 La facultad 1045 00:52:49,769 --> 00:52:55,320 Benditos imports 1046 00:52:55,320 --> 00:52:56,659 Porque si no, vale 1047 00:52:56,659 --> 00:52:59,380 Y las facultades están, ahora ya sí que sí 1048 00:52:59,380 --> 00:53:01,219 En la universidad 1049 00:53:01,219 --> 00:53:02,440 Y terminado 1050 00:53:02,440 --> 00:53:05,159 Podemos ya generar a ver si las clases están bien 1051 00:53:05,159 --> 00:53:05,719 Porque claro 1052 00:53:05,719 --> 00:53:08,019 Podrían no estar bien 1053 00:53:08,019 --> 00:53:10,059 La universidad 1054 00:53:10,059 --> 00:53:17,369 Vale 1055 00:53:17,369 --> 00:53:20,170 Y la universidad 1056 00:53:20,170 --> 00:53:21,570 Tiene su nombre 1057 00:53:21,570 --> 00:53:23,769 Universidad 1058 00:53:23,769 --> 00:53:28,730 Y la universidad tiene 1059 00:53:28,730 --> 00:53:31,349 Su lista de facultades 1060 00:53:31,349 --> 00:53:32,469 Que son los que acabamos de hacer 1061 00:53:32,469 --> 00:53:34,190 Y ahora esto 1062 00:53:34,190 --> 00:53:36,269 Podríamos mandarlo a un xml 1063 00:53:36,269 --> 00:53:38,889 Ni método aparte 1064 00:53:38,889 --> 00:53:39,289 Ni nada 1065 00:53:39,289 --> 00:53:41,269 Recordad que esto 1066 00:53:41,269 --> 00:53:42,570 Hacíamos un contexto 1067 00:53:42,570 --> 00:53:47,110 Que era 1068 00:53:47,110 --> 00:53:48,510 Juraría 1069 00:53:48,510 --> 00:53:51,889 Y lo instanciábamos 1070 00:53:51,889 --> 00:53:53,010 Con new instance 1071 00:53:53,010 --> 00:53:55,510 Y aquí le dábamos 1072 00:53:55,510 --> 00:53:57,630 La clase 1073 00:53:57,630 --> 00:53:58,989 Raíz 1074 00:53:58,989 --> 00:54:07,179 Y hacemos hasta un throw 1075 00:54:07,179 --> 00:54:10,000 Solamente queremos probar que las clases 1076 00:54:10,000 --> 00:54:11,000 Que ha generado están bien 1077 00:54:11,000 --> 00:54:13,639 Y ahora ya creábamos el 1078 00:54:13,639 --> 00:54:14,539 Marshaller 1079 00:54:14,539 --> 00:54:23,429 Que este yo creo que se hacía desde aquí 1080 00:54:23,429 --> 00:54:25,389 Create Marshaler 1081 00:54:25,389 --> 00:54:27,269 Y ahora 1082 00:54:27,269 --> 00:54:29,070 Al Marshaler 1083 00:54:29,070 --> 00:54:31,510 Le poníamos la propiedad 1084 00:54:31,510 --> 00:54:33,690 De que estuviera formateada 1085 00:54:33,690 --> 00:54:34,349 La salida 1086 00:54:34,349 --> 00:54:38,469 SetProperty 1087 00:54:38,469 --> 00:54:40,809 Y es 1088 00:54:40,809 --> 00:54:43,070 Esta propiedad 1089 00:54:43,070 --> 00:54:44,909 Yo creo que era una 1090 00:54:44,909 --> 00:54:47,329 Propiedad final del contexto 1091 00:54:47,329 --> 00:54:48,449 Jaxbeck 1092 00:54:48,449 --> 00:54:51,429 No era formate 1093 00:54:51,429 --> 00:54:55,269 Luego de aquí no puede ser 1094 00:54:55,269 --> 00:54:56,329 Porque solo me ofrece 1095 00:54:56,329 --> 00:54:59,389 Podría ser de marshaller 1096 00:54:59,389 --> 00:55:00,050 Imagino 1097 00:55:00,050 --> 00:55:02,090 Marshaller.si 1098 00:55:02,090 --> 00:55:06,929 Y a este a true 1099 00:55:06,929 --> 00:55:11,039 Vale, la propiedad del marshaller 1100 00:55:11,039 --> 00:55:13,380 Salida formateada se la ponemos a true 1101 00:55:13,380 --> 00:55:15,059 Y ahora ya 1102 00:55:15,059 --> 00:55:17,280 Hacemos el marshaller 1103 00:55:17,280 --> 00:55:18,679 Desde 1104 00:55:18,679 --> 00:55:21,119 Mi objeto 1105 00:55:21,119 --> 00:55:21,900 Unif 1106 00:55:21,900 --> 00:55:25,480 Y aquí poníamos el fichero 1107 00:55:25,480 --> 00:55:38,769 Universidad.xml 1108 00:55:38,769 --> 00:55:41,590 E importamos file 1109 00:55:41,590 --> 00:55:45,920 ¿Por qué no se ha unido? 1110 00:55:49,570 --> 00:55:49,829 ¿Cómo? 1111 00:55:50,750 --> 00:55:52,349 No, no quiero añadir esto 1112 00:55:52,349 --> 00:55:53,610 Espera, crear 1113 00:55:53,610 --> 00:56:04,269 File 1114 00:56:04,269 --> 00:56:08,469 Vale, ya está 1115 00:56:08,469 --> 00:56:12,550 Venga, no hemos tocado las clases que ha generado el plugin 1116 00:56:12,550 --> 00:56:15,349 Vamos a ver si nos genera un xml en condiciones 1117 00:56:15,349 --> 00:56:19,809 ¿Error? 1118 00:56:19,809 --> 00:56:26,840 Universidad XML 1119 00:56:26,840 --> 00:56:28,420 Refresh 1120 00:56:28,420 --> 00:56:32,539 ¿Vale? 1121 00:56:35,039 --> 00:56:37,239 Jolín, qué salida formateada tan horrible 1122 00:56:37,239 --> 00:56:38,719 ¿Por qué materia me la ha puesto aquí? 1123 00:56:47,269 --> 00:56:47,949 Sí, sí 1124 00:56:47,949 --> 00:56:49,989 El tema es 1125 00:56:49,989 --> 00:56:50,489 ¿Por qué? 1126 00:56:57,019 --> 00:56:58,519 Porque no me lo ha formateado bien 1127 00:56:58,519 --> 00:56:59,239 O sea, está bien 1128 00:56:59,239 --> 00:57:01,039 El XML está bien generado 1129 00:57:01,039 --> 00:57:03,480 Tiene todos los datos correctamente 1130 00:57:03,480 --> 00:57:06,380 Pero no sé por qué esto no me lo ha puesto bien 1131 00:57:06,380 --> 00:57:07,780 Igual es que ya tiene un límite 1132 00:57:07,780 --> 00:57:09,980 Dentro del cual ya deja de formatear 1133 00:57:09,980 --> 00:57:11,780 Cuando hay tantos internos 1134 00:57:11,780 --> 00:57:13,000 Qué raro, no lo sé 1135 00:57:13,000 --> 00:57:15,980 Pero bueno, lo ha generado bien y ya está 1136 00:57:15,980 --> 00:57:17,019 ¿Vale? 1137 00:57:19,139 --> 00:57:20,880 No tendrá dinero suficiente 1138 00:57:20,880 --> 00:57:24,059 Para indexar más 1139 00:57:24,059 --> 00:57:32,880 A parte de la clase universitaria 1140 00:57:33,480 --> 00:57:35,920 nos ha generado aquí 1141 00:57:35,920 --> 00:57:40,440 este objeto 1142 00:57:40,440 --> 00:57:42,539 este objeto 1143 00:57:42,539 --> 00:57:44,039 object factory 1144 00:57:44,039 --> 00:57:46,739 es como su nombre indica 1145 00:57:46,739 --> 00:57:48,739 una factoría de objetos 1146 00:57:48,739 --> 00:57:50,519 de la que podemos pasar 1147 00:57:50,519 --> 00:57:51,400 completamente 1148 00:57:51,400 --> 00:57:54,760 entonces, una factoría de objetos 1149 00:57:54,760 --> 00:57:56,239 ¿qué hace? crear objetos 1150 00:57:56,239 --> 00:57:58,900 efectivamente, me está creando 1151 00:57:58,900 --> 00:58:01,139 simplemente instancias 1152 00:58:01,139 --> 00:58:02,460 instancias 1153 00:58:02,460 --> 00:58:04,940 de los objetos de mi contexto 1154 00:58:04,940 --> 00:58:05,480 de Jax B 1155 00:58:05,480 --> 00:58:07,659 vale 1156 00:58:07,659 --> 00:58:10,800 universidad facultades me ofrece un 1157 00:58:10,800 --> 00:58:11,960 create 1158 00:58:11,960 --> 00:58:14,940 para cada uno de los objetos de mi contexto 1159 00:58:14,940 --> 00:58:16,219 vale 1160 00:58:16,219 --> 00:58:18,900 es una factoría de objetos 1161 00:58:18,900 --> 00:58:20,980 entonces tiene sentido 1162 00:58:20,980 --> 00:58:22,340 usar esta factoría de objetos 1163 00:58:22,340 --> 00:58:24,420 en un caso muy concreto 1164 00:58:24,420 --> 00:58:25,980 en el contexto de Jax B si 1165 00:58:25,980 --> 00:58:26,920 porque a ver 1166 00:58:26,920 --> 00:58:30,760 podría ocurrir que por la razón 1167 00:58:30,760 --> 00:58:31,400 que fuera 1168 00:58:31,400 --> 00:58:36,599 esta clase mía universidad 1169 00:58:36,599 --> 00:58:39,039 esto lo menciono solo, no vamos a trabajarlo 1170 00:58:39,039 --> 00:58:41,659 porque es que no merece la pena seguir insistiendo más en el XML 1171 00:58:41,659 --> 00:58:44,960 podría ocurrir que aquí no existiera 1172 00:58:44,960 --> 00:58:46,760 la anotación XML root element 1173 00:58:46,760 --> 00:58:49,559 porque esto estuviera dentro de otra jerarquía 1174 00:58:49,559 --> 00:58:52,440 es decir, que hubiera otra clase por ahí 1175 00:58:52,440 --> 00:58:56,719 que es la verdadera clase raíz que tiene una universidad dentro 1176 00:58:56,719 --> 00:59:00,340 entonces aquí no estaría el XML root element 1177 00:59:00,340 --> 00:59:01,920 sino que estaría en la otra clase 1178 00:59:01,920 --> 00:59:05,179 que esa otra clase tiene una propiedad universidad dentro 1179 00:59:05,179 --> 00:59:06,719 que es un subnodo de ella 1180 00:59:06,719 --> 00:59:09,500 pero puede ocurrir que en un momento dado 1181 00:59:09,500 --> 00:59:12,260 yo quiera hacer un XML que solo tenga esta parte 1182 00:59:12,260 --> 00:59:15,800 entonces si quiero hacer un XML que solo tenga esta parte 1183 00:59:15,800 --> 00:59:16,860 tendría que venirme aquí 1184 00:59:16,860 --> 00:59:19,320 poner el XML root element 1185 00:59:19,320 --> 00:59:21,260 generarlo y luego quitarlo 1186 00:59:21,260 --> 00:59:24,579 porque en realidad esta clase universidad 1187 00:59:24,579 --> 00:59:26,659 está dentro de otra clase 1188 00:59:26,659 --> 00:59:28,380 que es la que sí que tiene el root element 1189 00:59:28,380 --> 00:59:31,539 No sé si me explico la situación a la que me refiero. 1190 00:59:32,099 --> 00:59:32,380 Sí, ¿no? 1191 00:59:32,860 --> 00:59:35,119 Vale, pues si estoy en esta situación 1192 00:59:35,119 --> 00:59:39,780 y yo tengo que generar un sub-XML, entre comillas, 1193 00:59:39,920 --> 00:59:41,860 que solo tenga de universidad hacia abajo 1194 00:59:41,860 --> 00:59:44,619 y no puedo poner aquí el XML root element 1195 00:59:44,619 --> 00:59:48,320 porque no puedo entrar al código fuente para cambiarlo, 1196 00:59:48,920 --> 00:59:51,099 pues ahí es donde entra en ese contexto 1197 00:59:51,099 --> 00:59:54,380 y solo en ese que a mí se me ocurra, 1198 00:59:54,880 --> 00:59:58,079 en el que tiene sentido el Object Factory. 1199 00:59:58,380 --> 01:00:07,800 ¿Por qué? Porque el ObjectFactory genera objetos, pero tiene una anotación aquí, una anotación que nos pasa por alto, que es una anotación de JaxB. 1200 01:00:08,500 --> 01:00:19,800 Entonces, esta anotación hace que estos objetos tú los puedas instanciar no solo como el propio objeto universidad, sino como JaxB element. 1201 01:00:19,800 --> 01:00:23,860 Es decir, tenemos aquí una 1202 01:00:23,860 --> 01:00:26,019 Tenemos una clase 1203 01:00:26,019 --> 01:00:27,699 Que no hemos 1204 01:00:27,699 --> 01:00:29,380 Trabajado, pero nos ha hecho falta 1205 01:00:29,380 --> 01:00:30,719 Y no hace falta a la mayoría de los 1206 01:00:30,719 --> 01:00:33,179 Que es JaxbElement 1207 01:00:33,179 --> 01:00:34,559 ¿Vale? 1208 01:00:35,659 --> 01:00:37,739 Por ejemplo, me voy a hacer un JaxbElement 1209 01:00:37,739 --> 01:00:39,860 Asociado a universidad 1210 01:00:39,860 --> 01:00:41,400 ¿Vale? 1211 01:00:45,420 --> 01:00:45,900 Entonces 1212 01:00:45,900 --> 01:00:47,139 Esto 1213 01:00:47,139 --> 01:00:50,079 No me acuerdo como se instanciaba 1214 01:00:50,079 --> 01:00:52,500 JaxbElement 1215 01:00:52,500 --> 01:00:56,340 Ah, con el ObjectFactory 1216 01:00:56,340 --> 01:00:58,300 Eso vale 1217 01:00:58,300 --> 01:00:59,739 Claro 1218 01:00:59,739 --> 01:01:02,340 ObjectFactory 1219 01:01:02,340 --> 01:01:04,360 Factory 1220 01:01:04,360 --> 01:01:06,059 Punto 1221 01:01:06,059 --> 01:01:09,019 A través del ObjectFactory 1222 01:01:09,019 --> 01:01:10,780 Lo instancias, pero necesitas 1223 01:01:10,780 --> 01:01:12,019 El ObjectFactory, claro 1224 01:01:12,019 --> 01:01:14,179 Necesitas crear porque no es el método estático 1225 01:01:14,179 --> 01:01:16,159 Necesitas crear 1226 01:01:16,159 --> 01:01:18,079 El ObjectFactory 1227 01:01:18,079 --> 01:01:33,690 Cuidado con el 1228 01:01:33,690 --> 01:01:36,429 Veis la cantidad de import 1229 01:01:36,429 --> 01:01:37,550 Que hay para cualquier cosa 1230 01:01:37,550 --> 01:01:40,289 Y ahora este object factory 1231 01:01:40,289 --> 01:01:42,150 Te permite ahora ya si 1232 01:01:42,150 --> 01:01:44,670 Crear 1233 01:01:44,670 --> 01:01:46,750 Una 1234 01:01:46,750 --> 01:01:51,849 Crear una universidad 1235 01:01:51,849 --> 01:01:53,130 Vale 1236 01:01:53,130 --> 01:01:55,690 Y aquí me falta el punto y coma 1237 01:01:55,690 --> 01:01:56,730 Efectivamente 1238 01:01:56,730 --> 01:01:59,429 Y aquí me falta 1239 01:01:59,429 --> 01:02:01,369 Importar 1240 01:02:01,369 --> 01:02:02,630 Jaxpe element 1241 01:02:02,630 --> 01:02:05,469 Y aquí yo puedo hacer un casting 1242 01:02:05,469 --> 01:02:07,210 sin problema 1243 01:02:07,210 --> 01:02:18,960 no, pero no quiero hacer esto 1244 01:02:18,960 --> 01:02:22,239 no, es que no quiero hacer esto 1245 01:02:22,239 --> 01:02:24,380 porque yo quiero un Jaxby element 1246 01:02:24,380 --> 01:02:27,159 aquí 1247 01:02:27,159 --> 01:02:33,010 haces un casting, vale, es que no quiero que 1248 01:02:33,010 --> 01:02:34,690 lo quería solo mencionar por encima 1249 01:02:34,690 --> 01:02:36,050 no quiero que nos 1250 01:02:36,050 --> 01:02:38,570 Jaxby element de 1251 01:02:38,570 --> 01:02:40,690 adversidad 1252 01:02:40,690 --> 01:02:48,570 Porque no puedes hacer 1253 01:02:48,570 --> 01:02:50,110 A ver, espera 1254 01:02:50,110 --> 01:02:52,670 Antes de seguir pidiendo el tiempo probando 1255 01:02:52,670 --> 01:02:54,030 Voy a 1256 01:02:54,030 --> 01:02:56,190 Preguntárselo a este 1257 01:02:56,190 --> 01:02:59,530 ¿Cómo 1258 01:02:59,530 --> 01:03:01,710 Instancio 1259 01:03:01,710 --> 01:03:04,170 Un Jaxb 1260 01:03:04,170 --> 01:03:05,429 Element 1261 01:03:05,429 --> 01:03:07,989 Con mi 1262 01:03:07,989 --> 01:03:10,469 Object 1263 01:03:10,469 --> 01:03:12,670 Factory? Seguro que sabe a lo que me refiero 1264 01:03:12,670 --> 01:03:30,360 Bueno 1265 01:03:30,360 --> 01:03:32,460 Bueno, el factory es el object factory 1266 01:03:32,460 --> 01:03:35,239 Llamas al método 1267 01:03:35,239 --> 01:03:37,280 Y yo lo que no le he pasado es el 1268 01:03:37,280 --> 01:03:41,429 Ah, vale, vale, vale 1269 01:03:41,429 --> 01:03:42,250 Claro, es que no le he pasado 1270 01:03:42,250 --> 01:03:44,489 Vale, vale, vale, vale, es que no le he pasado el este 1271 01:03:44,489 --> 01:03:46,750 Lógicamente, es que soy imbécil 1272 01:03:46,750 --> 01:03:48,329 Vale, a ver 1273 01:03:48,329 --> 01:03:51,110 Tenemos que dar el elemento asociado 1274 01:03:51,110 --> 01:03:52,070 Lógicamente 1275 01:03:52,070 --> 01:03:54,289 Asociado 1276 01:03:54,289 --> 01:03:56,769 A la universidad que yo acabo de hacer 1277 01:03:56,769 --> 01:03:58,230 Claro 1278 01:03:58,230 --> 01:04:01,110 Vale 1279 01:04:01,110 --> 01:04:03,170 Y ya, claro 1280 01:04:03,170 --> 01:04:04,530 Que no le pasa al parámetro 1281 01:04:04,530 --> 01:04:07,289 Y luego 1282 01:04:07,289 --> 01:04:16,619 Ya está 1283 01:04:16,619 --> 01:04:19,070 Vale 1284 01:04:19,070 --> 01:04:21,969 Vale, vale, es que no le había pasado esto 1285 01:04:21,969 --> 01:04:24,070 Y aquí que me dice 1286 01:04:24,070 --> 01:04:35,980 Es que este object factory 1287 01:04:35,980 --> 01:04:37,739 No está bien 1288 01:04:37,739 --> 01:04:48,960 Es que este object factory 1289 01:04:48,960 --> 01:04:56,539 Un momentito, vale, de xml 1290 01:04:56,539 --> 01:04:58,500 Que nos falta 1291 01:04:58,500 --> 01:04:59,920 Muy poca cosa 1292 01:04:59,920 --> 01:05:02,159 Solamente 1293 01:05:02,159 --> 01:05:04,199 voy a mencionar, por mencionarlo 1294 01:05:04,199 --> 01:05:06,500 por mencionarlo y podemos ver un ejemplo 1295 01:05:06,500 --> 01:05:08,639 de cómo es, pero sin hacerlo ni practicarlo 1296 01:05:08,639 --> 01:05:10,460 no lo voy a preguntar en el examen 1297 01:05:10,460 --> 01:05:12,019 ¿vale? 1298 01:05:12,239 --> 01:05:13,880 estas tecnologías que hemos visto 1299 01:05:13,880 --> 01:05:15,679 DOM y JaxB 1300 01:05:15,679 --> 01:05:20,639 todas ellas están basadas 1301 01:05:20,639 --> 01:05:21,860 en volcar 1302 01:05:21,860 --> 01:05:24,539 todo el contenido de mi XML 1303 01:05:24,539 --> 01:05:25,860 en memoria principal 1304 01:05:25,860 --> 01:05:27,699 bien sea en una variable document 1305 01:05:27,699 --> 01:05:30,340 o bien sea en mis entidades 1306 01:05:30,340 --> 01:05:32,139 siempre mejor esta opción 1307 01:05:32,139 --> 01:05:34,119 porque mis entidades aparte juegan 1308 01:05:34,119 --> 01:05:36,039 en la aplicación en más bandos, juegan haciendo 1309 01:05:36,039 --> 01:05:38,500 cosas por otras partes, aquí el document 1310 01:05:38,500 --> 01:05:40,059 solo juega para el xml 1311 01:05:40,059 --> 01:05:42,219 luego es una carga en ram 1312 01:05:42,219 --> 01:05:43,840 innecesaria, siempre mejor esto 1313 01:05:43,840 --> 01:05:46,340 ¿vale? porque aprovecho mis propios 1314 01:05:46,340 --> 01:05:48,340 objetos que hacen cosas para serializarse 1315 01:05:49,139 --> 01:05:51,519 ¿vale? pero 1316 01:05:51,519 --> 01:05:54,579 si nosotros el aprovechar 1317 01:05:54,579 --> 01:05:56,260 mis propios objetos que están ahí 1318 01:05:56,260 --> 01:05:58,079 haciendo cosas para serializarse 1319 01:05:58,079 --> 01:06:14,519 Pues no es interesante porque yo solamente quiero la parte de XML y no quiero cargarlo todo en memoria como DOM, pues puedo usar una tercera herramienta, SACS, que os suena el nombre, SACS, que es para serializar XML, ¿verdad? 1320 01:06:14,519 --> 01:06:16,900 pero esto vale solo para leer 1321 01:06:16,900 --> 01:06:18,559 esta tecnología 1322 01:06:18,559 --> 01:06:21,000 vale solamente para leer 1323 01:06:21,000 --> 01:06:22,480 XML en plan rápido 1324 01:06:22,480 --> 01:06:25,099 y sin cargar la memoria principal para nada 1325 01:06:25,099 --> 01:06:27,039 y está basado 1326 01:06:27,039 --> 01:06:29,360 en eventos 1327 01:06:29,360 --> 01:06:32,739 en lo que podría ser remotamente 1328 01:06:32,739 --> 01:06:35,539 una programación reactiva 1329 01:06:35,539 --> 01:06:36,920 pero no, en realidad no 1330 01:06:36,920 --> 01:06:38,760 ¿vale? entonces 1331 01:06:38,760 --> 01:06:40,000 ¿en qué está basado SACS? 1332 01:06:40,659 --> 01:06:42,579 pues tú declaras una clase 1333 01:06:42,579 --> 01:06:44,679 vamos a ver un ejemplito para que no se quede demasiado 1334 01:06:44,679 --> 01:06:46,679 tú declaras una clase 1335 01:06:46,679 --> 01:06:49,199 y declaras lo que vas a hacer 1336 01:06:49,199 --> 01:06:50,679 según pasen 1337 01:06:50,679 --> 01:06:52,920 eventos una vez que has lanzado 1338 01:06:52,920 --> 01:06:54,880 un proceso, entonces el proceso 1339 01:06:54,880 --> 01:06:56,019 que tú vas a lanzar es 1340 01:06:56,019 --> 01:06:58,920 enganchar el xml a un flujo 1341 01:06:58,920 --> 01:07:01,139 de entrada, eso es el proceso 1342 01:07:01,139 --> 01:07:03,039 que vamos a lanzar en nuestro 1343 01:07:03,039 --> 01:07:05,139 main, nuestro main lo que hace es 1344 01:07:05,139 --> 01:07:07,179 enganchar el xml a un flujo 1345 01:07:07,179 --> 01:07:09,159 de entrada, entonces desde el momento en el que 1346 01:07:09,159 --> 01:07:10,920 el xml se engancha al flujo 1347 01:07:10,920 --> 01:07:13,119 de entrada, empiezan a salir por ahí 1348 01:07:13,119 --> 01:07:14,780 las cositas que están en el PSML. 1349 01:07:14,940 --> 01:07:15,780 Empiezan a salir por ahí. 1350 01:07:16,860 --> 01:07:18,800 Por ejemplo, el arranque de un nodo, 1351 01:07:19,320 --> 01:07:20,480 el cierre de un nodo, 1352 01:07:20,840 --> 01:07:22,239 el arranque de un nodo texto, 1353 01:07:22,619 --> 01:07:24,139 el cierre del nodo raíz. 1354 01:07:24,599 --> 01:07:26,599 Empezan a pasar cosas según van saliendo. 1355 01:07:26,719 --> 01:07:27,500 Empiezan a pasar cosas. 1356 01:07:28,219 --> 01:07:30,659 Bueno, pues resulta que yo en una clase 1357 01:07:30,659 --> 01:07:32,260 he programado 1358 01:07:32,260 --> 01:07:34,900 qué quiero hacer según vayan pasando 1359 01:07:34,900 --> 01:07:36,699 mis cositas. Nodo que se abre, 1360 01:07:36,860 --> 01:07:38,719 nodo que se cierra, nodo texto que se abre. 1361 01:07:39,199 --> 01:07:40,360 ¿Qué programaré ahí? 1362 01:07:40,360 --> 01:07:42,960 pues lo que quiera, pues coger el contenido 1363 01:07:42,960 --> 01:07:44,719 y mostrarlo, coger el contenido 1364 01:07:44,719 --> 01:07:47,059 e ignorarlo, coger el contenido y llevarlo a variables 1365 01:07:47,059 --> 01:07:48,800 lo que yo quiera, entonces aquí 1366 01:07:48,800 --> 01:07:50,599 no se guarda nada en memoria RAM 1367 01:07:50,599 --> 01:07:52,519 aquí van llegando las cosas 1368 01:07:52,519 --> 01:07:54,880 las procesos, según haya 1369 01:07:54,880 --> 01:07:56,659 puesto yo en mi clase, las procesos 1370 01:07:56,659 --> 01:07:57,760 y van a la basura 1371 01:07:57,760 --> 01:08:00,260 van llegando las procesos 1372 01:08:00,260 --> 01:08:02,800 y a la basura, van llegando las procesos 1373 01:08:02,800 --> 01:08:05,239 y a la basura, esta es una programación 1374 01:08:05,239 --> 01:08:06,639 basada en 1375 01:08:06,639 --> 01:08:08,219 captura de puntos 1376 01:08:08,219 --> 01:08:09,639 ¿vale? una 1377 01:08:09,639 --> 01:08:13,159 un diseño habitual en otros contextos 1378 01:08:13,159 --> 01:08:14,780 como en interfaces gráficas 1379 01:08:14,780 --> 01:08:16,319 etcétera 1380 01:08:16,319 --> 01:08:18,359 y es el que motiva 1381 01:08:18,359 --> 01:08:21,220 motivó la actual programación reactiva 1382 01:08:21,220 --> 01:08:22,859 vale pues 1383 01:08:22,859 --> 01:08:25,479 vamos a verlo en un ejemplito 1384 01:08:25,479 --> 01:08:26,579 y ya está 1385 01:08:26,579 --> 01:08:31,439 para que no se quede así 1386 01:08:31,439 --> 01:08:33,939 por ejemplo 1387 01:08:33,939 --> 01:08:42,500 aquí tendré un ejemplo 1388 01:08:42,500 --> 01:08:44,140 del año pasado 1389 01:08:46,619 --> 01:09:36,199 Vale, pues esto de aquí 1390 01:09:36,199 --> 01:09:42,069 Por ejemplo, tenemos aquí un archivo cualquiera 1391 01:09:42,069 --> 01:09:44,229 Del que quiero leer 1392 01:09:44,229 --> 01:09:45,029 Y solo leer 1393 01:09:45,029 --> 01:09:47,449 Porque SACS es solo para leer rápido 1394 01:09:47,449 --> 01:09:49,069 Y sin cargar la memoria principal 1395 01:09:49,069 --> 01:09:50,710 Quiero solamente leer 1396 01:09:50,710 --> 01:09:53,670 Vale, pues para leer mi main 1397 01:09:53,670 --> 01:09:54,250 ¿Qué va a hacer? 1398 01:09:55,090 --> 01:09:56,810 Mi main lo único que va a hacer va a ser 1399 01:09:56,810 --> 01:09:57,930 Bueno, instanciar 1400 01:09:57,930 --> 01:10:01,130 Como siempre, el que va a parsear 1401 01:10:01,130 --> 01:10:02,810 Este parser que se instancia 1402 01:10:02,810 --> 01:10:03,670 Desde una factoría 1403 01:10:03,670 --> 01:10:05,229 como casi siempre 1404 01:10:05,229 --> 01:10:07,229 vale, y ahora 1405 01:10:07,229 --> 01:10:09,130 aquí se lanza 1406 01:10:09,130 --> 01:10:10,909 el parse 1407 01:10:10,909 --> 01:10:14,090 entonces desde el momento en que se lanza 1408 01:10:14,090 --> 01:10:14,529 el parse 1409 01:10:14,529 --> 01:10:18,229 ¿qué empieza a pasar? que este fichero 1410 01:10:18,229 --> 01:10:20,329 entra en una especie de tubería 1411 01:10:20,329 --> 01:10:22,050 y va metiendo ahí sus cosas 1412 01:10:22,050 --> 01:10:22,909 pa pa pa pa 1413 01:10:22,909 --> 01:10:26,270 y según van saliendo las cosas por el otro lado 1414 01:10:26,270 --> 01:10:27,970 esta clase 1415 01:10:27,970 --> 01:10:29,789 va decidiendo qué hacer con ellas 1416 01:10:29,789 --> 01:10:31,649 bueno, pues esta clase 1417 01:10:31,649 --> 01:10:33,789 este objeto es el que tendremos que haber 1418 01:10:33,789 --> 01:10:35,489 declarado nosotros 1419 01:10:35,489 --> 01:10:37,710 luego la lectura del 1420 01:10:37,710 --> 01:10:39,289 xml consiste en 1421 01:10:39,289 --> 01:10:41,069 un parser 1422 01:10:41,069 --> 01:10:43,510 lanza que el xml 1423 01:10:43,510 --> 01:10:45,050 empiece a llegar por una tubería 1424 01:10:45,050 --> 01:10:47,470 el xml va saliendo 1425 01:10:47,470 --> 01:10:49,569 por la tubería y este objeto que yo he 1426 01:10:49,569 --> 01:10:51,609 programado decide que hago 1427 01:10:51,609 --> 01:10:52,789 con cada cosa que pase 1428 01:10:52,789 --> 01:10:54,250 y ya está 1429 01:10:54,250 --> 01:10:55,350 ¿vale? 1430 01:10:56,569 --> 01:10:58,970 ahora, claro, eso lo tendremos que haber declarado, vamos a ver 1431 01:10:58,970 --> 01:11:01,630 ¿cómo declaramos todos pedidos handler? bueno, pues pedidos handler 1432 01:11:01,630 --> 01:11:03,289 es 1433 01:11:03,289 --> 01:11:06,949 esta clase de aquí 1434 01:11:06,949 --> 01:11:09,010 que tiene que ser un manejador 1435 01:11:09,010 --> 01:11:10,869 por eso lo heredo de un manejador 1436 01:11:10,869 --> 01:11:12,850 vale, y yo aquí programo 1437 01:11:12,850 --> 01:11:15,090 lo que quiera, siempre y cuando 1438 01:11:15,090 --> 01:11:16,850 sobreescriba los métodos 1439 01:11:16,850 --> 01:11:19,310 de un manejador por defecto 1440 01:11:19,310 --> 01:11:20,449 vale, entonces 1441 01:11:20,449 --> 01:11:22,409 ¿qué métodos tengo que sobreescribir? 1442 01:11:23,409 --> 01:11:25,010 bueno, los que yo quiera, no todos 1443 01:11:25,010 --> 01:11:27,229 porque esto no es una implementación de una interfaz 1444 01:11:27,229 --> 01:11:29,170 es una herencia, entonces no estoy 1445 01:11:29,170 --> 01:11:30,289 obligada a sobreescribirlos todos 1446 01:11:30,289 --> 01:11:33,350 Vale, pues el método StartElement 1447 01:11:33,350 --> 01:11:36,569 Aquí escribo lo que quiero yo que pase 1448 01:11:36,569 --> 01:11:39,510 Cuando llegue el evento de que arranca un nodo 1449 01:11:39,510 --> 01:11:42,710 En este caso, pues si el nodo es cliente 1450 01:11:42,710 --> 01:11:43,729 Quiero que hagas no sé qué 1451 01:11:43,729 --> 01:11:48,729 Este método, este método es el que arranca 1452 01:11:48,729 --> 01:11:49,869 Cuando llegue un nodo texto 1453 01:11:49,869 --> 01:11:51,729 Cuando llegue un nodo texto 1454 01:11:51,729 --> 01:11:54,109 Pues aquí tenía puesto lo que quiero que pase 1455 01:11:54,109 --> 01:11:55,390 Cuando llegue un nodo texto 1456 01:11:55,390 --> 01:11:58,590 Esto es lo que yo quiero que pase 1457 01:11:58,590 --> 01:12:00,329 Cuando llega la etiqueta de cierre 1458 01:12:00,329 --> 01:12:03,229 Pues aquí tengo puesto lo que pasa, etc. 1459 01:12:03,750 --> 01:12:05,550 Vale, este manejador lo programo yo. 1460 01:12:05,649 --> 01:12:07,550 Entonces, en particular, ¿qué es lo que quiero que haga? 1461 01:12:07,850 --> 01:12:12,550 Este en particular iba yo cogiendo las cosas que iban llegando y las iba guardando en una lista de objetos. 1462 01:12:13,050 --> 01:12:15,090 Las iba guardando ahí, ¿vale? 1463 01:12:15,409 --> 01:12:17,289 Y luego ofrecía un método para sacarlo. 1464 01:12:18,609 --> 01:12:21,229 Bueno, pues mi lectura se convierte en muy ligera. 1465 01:12:21,229 --> 01:12:25,590 hago el parse, este manejador va haciendo 1466 01:12:25,590 --> 01:12:28,789 lo que yo le haya dicho que haga con cada cosa que va pasando 1467 01:12:28,789 --> 01:12:32,430 en secuencia dentro de este xml 1468 01:12:32,430 --> 01:12:36,970 y dentro del handler se habrá quedado mi objeto pedidos 1469 01:12:36,970 --> 01:12:43,600 y ya está, entonces que sepáis que existe 1470 01:12:43,600 --> 01:12:46,979 una forma más ligera de leer de un xml, solo de leer 1471 01:12:46,979 --> 01:12:53,359 que es esta tecnología, sax, voy a subir el proyecto 1472 01:12:53,359 --> 01:12:55,640 como ejemplo para que esté ahí subido el ejemplo 1473 01:12:55,640 --> 01:12:57,859 pero bueno, no voy a preguntar 1474 01:12:57,859 --> 01:12:58,960 nada en el examen de esto 1475 01:12:58,960 --> 01:13:00,739 pero lo único que quiero es que os suene 1476 01:13:00,739 --> 01:13:03,739 para que se quede completo 1477 01:13:03,739 --> 01:13:04,319 lo de XML 1478 01:13:04,319 --> 01:13:07,840 y con esto damos por terminado 1479 01:13:07,840 --> 01:13:09,340 XML por siempre 1480 01:13:09,340 --> 01:13:12,100 jamás, salvo que hay ficheros de configuración 1481 01:13:12,100 --> 01:13:13,899 que son XML 1482 01:13:13,899 --> 01:13:17,119 y que muchos frameworks 1483 01:13:17,119 --> 01:13:19,920 usan XML 1484 01:13:19,920 --> 01:13:21,520 para muchas cosas, con lo cual 1485 01:13:21,520 --> 01:13:22,619 tendrán que usar JaxB 1486 01:13:22,619 --> 01:13:25,279 Y puede que alguno de los fallos 1487 01:13:25,279 --> 01:13:26,819 Cuando yo estoy haciendo cualquier cosa 1488 01:13:26,819 --> 01:13:27,680 Con algún framework 1489 01:13:27,680 --> 01:13:30,619 Uno de los millones de fallos que pueden salir 1490 01:13:30,619 --> 01:13:33,079 Puede decir a la palabra clave 1491 01:13:33,079 --> 01:13:33,520 Jaxb 1492 01:13:33,520 --> 01:13:36,300 Entonces, pues ya sabemos a qué se refiere 1493 01:13:36,300 --> 01:13:38,380 Tiene algún fichero de configuración xml 1494 01:13:38,380 --> 01:13:39,840 No lo está sabiendo leer internamente 1495 01:13:39,840 --> 01:13:41,619 A lo mejor me falta dependencia de Jaxb 1496 01:13:41,619 --> 01:13:44,600 O la versión que he puesto 1497 01:13:44,600 --> 01:13:46,199 No es compatible con la de mi framework 1498 01:13:46,199 --> 01:13:47,880 Entonces la dependencia de Jaxb 1499 01:13:47,880 --> 01:13:49,859 La usan internamente muchos frameworks 1500 01:13:49,859 --> 01:13:51,779 Porque necesitan parsear xml 1501 01:13:51,779 --> 01:13:56,090 hombre no 1502 01:13:56,090 --> 01:13:58,510 porque todo esto formaría parte 1503 01:13:58,510 --> 01:13:59,069 del 1504 01:13:59,069 --> 01:14:02,890 toda la granja o como lo queráis llamar 1505 01:14:02,890 --> 01:14:04,989 o granja o universo o ecosistema 1506 01:14:04,989 --> 01:14:05,430 de Java 1507 01:14:05,430 --> 01:14:08,649 pues esto es una cosa más dentro de esa enorme 1508 01:14:08,649 --> 01:14:09,189 granja 1509 01:14:09,189 --> 01:14:12,670 entonces pues el tema es que 1510 01:14:12,670 --> 01:14:14,689 claro, cuando vosotros decís que sabéis 1511 01:14:14,689 --> 01:14:16,750 Java, no vale con 1512 01:14:16,750 --> 01:14:18,250 decir yo sé hacer un programa en Java 1513 01:14:18,250 --> 01:14:19,729 eso lo sabe hacer cualquiera 1514 01:14:19,729 --> 01:14:22,970 vosotros tenéis que decir que sabéis 1515 01:14:22,970 --> 01:14:23,970 Raquel me dio Java 1516 01:14:23,970 --> 01:14:25,489 No, eso tampoco 1517 01:14:25,489 --> 01:14:25,850 Porque 1518 01:14:25,850 --> 01:14:29,829 Que sabéis de tecnologías Java 1519 01:14:29,829 --> 01:14:31,229 Hombre, ahora mismo nos faltan muchas 1520 01:14:31,229 --> 01:14:33,270 Pues claro, nos faltan frameworks de acceso a datos 1521 01:14:33,270 --> 01:14:34,109 Nos falta Spring 1522 01:14:34,109 --> 01:14:37,229 Nos falta conocer muchas cosas 1523 01:14:37,229 --> 01:14:38,630 De ese ecosistema enorme 1524 01:14:38,630 --> 01:14:40,850 Pero tenéis que haceros valer a que 1525 01:14:40,850 --> 01:14:42,949 No sabéis Java a nivel 1526 01:14:42,949 --> 01:14:44,069 Hacer una aplicación en Java 1527 01:14:44,069 --> 01:14:47,310 Sabéis Java a nivel aplicaciones empresariales 1528 01:14:47,310 --> 01:14:48,590 Y sabéis Spring 1529 01:14:48,590 --> 01:14:50,649 Y sabéis muchas cosas 1530 01:14:50,649 --> 01:14:52,289 Sabréis o conoceréis por encima 1531 01:14:52,289 --> 01:14:53,630 Pero podéis decir que sabréis 1532 01:14:53,630 --> 01:14:55,229 y sabéis programación 1533 01:14:55,229 --> 01:14:58,289 reactiva, la conoceréis 1534 01:14:58,289 --> 01:15:00,130 por encima, pero bueno, podéis decir 1535 01:15:00,130 --> 01:15:02,010 que sabréis, vale, ese tipo 1536 01:15:02,010 --> 01:15:05,149 de cosas, y ya está