1 00:00:00,000 --> 00:00:01,860 Ahora sí, empezar a grabar. 2 00:00:02,480 --> 00:00:05,339 Pues venga, nos hacemos un proyecto de Maven. 3 00:00:06,940 --> 00:00:14,509 ¿Cómo es una aplicación de escritorio? 4 00:00:14,570 --> 00:00:15,929 El 76% dura mucho. 5 00:00:16,989 --> 00:00:17,309 ¿Cómo? 6 00:00:18,589 --> 00:00:19,649 Sí, sí, pasa. 7 00:00:25,309 --> 00:00:27,390 Venga, primer ejemplo. 8 00:00:27,949 --> 00:00:28,750 Te veo de dos. 9 00:00:29,750 --> 00:00:32,270 Gracias. Menos mal que tengo un secretario aquí delante. 10 00:00:32,270 --> 00:00:32,710 Vale. 11 00:00:32,710 --> 00:00:33,850 Vale 12 00:00:33,850 --> 00:00:36,810 JDBC 13 00:00:36,810 --> 00:00:39,829 Ejemplo 1 14 00:00:39,829 --> 00:00:42,070 Por ejemplo, porque habrá unos cuantos más 15 00:00:42,070 --> 00:00:43,469 De este tema, suponemos 16 00:00:43,469 --> 00:00:51,850 Vale, este es el que vamos a subir a hola virtual 17 00:00:51,850 --> 00:00:54,070 Entonces vamos a intentar que quede claro y limpio 18 00:00:54,070 --> 00:00:58,250 Ay, que base de datos tan fea 19 00:00:58,250 --> 00:00:58,969 Hemos cogido 20 00:00:58,969 --> 00:01:01,030 Estoy pensando 21 00:01:01,030 --> 00:01:02,450 Pero bueno 22 00:01:02,450 --> 00:01:05,989 Vale, pues a ver 23 00:01:05,989 --> 00:01:10,049 Tenemos aquí nuestro proyecto 24 00:01:10,049 --> 00:01:12,030 aquí abajo del todo, muy bien 25 00:01:12,030 --> 00:01:14,030 bueno 26 00:01:14,030 --> 00:01:16,189 pues, primera cosa que nos 27 00:01:16,189 --> 00:01:17,109 quitamos de encima 28 00:01:17,109 --> 00:01:20,090 vamos a subir la máquina virtual 29 00:01:20,090 --> 00:01:22,950 por si acaso 30 00:01:22,950 --> 00:01:29,989 máquina virtual 31 00:01:29,989 --> 00:01:31,790 y nivel de compilación en 32 00:01:31,790 --> 00:01:32,810 consonancia 33 00:01:32,810 --> 00:01:39,540 ala, he subido 34 00:01:39,540 --> 00:01:42,379 Luis siempre vas a remolque 35 00:01:42,379 --> 00:01:44,299 he subido la máquina virtual 36 00:01:44,299 --> 00:01:46,379 de Mave como hacemos siempre 37 00:01:46,379 --> 00:01:47,340 del 8 al 21 38 00:01:47,340 --> 00:01:48,519 ya está 39 00:01:48,519 --> 00:01:51,579 es bueno, he hecho un proyecto previamente 40 00:01:51,579 --> 00:01:51,959 claro 41 00:01:51,959 --> 00:01:57,489 yo que sé, habría que preguntárselo 42 00:01:57,489 --> 00:01:59,090 a los del plugin de Maven 43 00:01:59,090 --> 00:02:00,090 de Eclipse, no lo sé 44 00:02:00,090 --> 00:02:05,370 pero crear un proyecto 45 00:02:05,370 --> 00:02:05,969 es algo raro 46 00:02:05,969 --> 00:02:09,750 bueno, venga, proyecto limpito 47 00:02:09,750 --> 00:02:11,490 vale 48 00:02:11,490 --> 00:02:13,650 primera cosa 49 00:02:13,650 --> 00:02:15,750 ya podemos avanzar 50 00:02:15,750 --> 00:02:16,669 que este proyecto 51 00:02:16,669 --> 00:02:18,310 una dependencia va a tener 52 00:02:18,310 --> 00:02:21,250 que es el driver, el conector 53 00:02:21,250 --> 00:02:23,129 ¿vale? porque ese es el que va a rellenar 54 00:02:23,129 --> 00:02:25,229 la API, la API no es dependencia externa 55 00:02:25,229 --> 00:02:27,069 porque va en el JDK, pero el conector 56 00:02:27,069 --> 00:02:29,090 sí, pues no pasa nada 57 00:02:29,090 --> 00:02:30,990 nos vamos al 58 00:02:30,990 --> 00:02:31,889 repositorio 59 00:02:31,889 --> 00:02:39,000 y le decimos pues algo con lo que 60 00:02:39,000 --> 00:02:40,960 se entiende, pues JDBC 61 00:02:40,960 --> 00:02:42,560 MySQL 62 00:02:42,560 --> 00:02:44,240 que feo con mayúsculas 63 00:02:44,240 --> 00:02:45,960 me ha quedado, pero bueno 64 00:02:45,960 --> 00:02:49,039 vale, me sale la palabra clave 65 00:02:49,039 --> 00:02:50,840 conector, hemos dicho que conector es como se suele 66 00:02:50,840 --> 00:02:53,319 llamar, pues debe ser que esto es 67 00:02:53,319 --> 00:02:54,939 entramos por 68 00:02:54,939 --> 00:02:57,280 aquí, pues otra cosa, pero me da igual 69 00:02:57,280 --> 00:02:59,219 te llevará 70 00:02:59,219 --> 00:03:00,240 al mismo sitio, efectivamente 71 00:03:00,240 --> 00:03:01,240 no te lleva 72 00:03:01,240 --> 00:03:04,500 a que lo lleva aquí, efectivamente 73 00:03:04,500 --> 00:03:06,819 bueno, pues va a ser esto 74 00:03:06,819 --> 00:03:07,919 debe ser que va a ser esto 75 00:03:07,919 --> 00:03:10,919 entonces, aquí uno 76 00:03:10,919 --> 00:03:12,840 se debería coger la 77 00:03:12,840 --> 00:03:14,379 versión en consonancia 78 00:03:14,379 --> 00:03:16,780 con el MySQL que se 79 00:03:16,780 --> 00:03:18,960 instaló, entonces 80 00:03:18,960 --> 00:03:20,860 donde 81 00:03:20,860 --> 00:03:23,580 la versión que os habéis instalado 82 00:03:23,580 --> 00:03:26,259 la recordáis, si no siempre podéis 83 00:03:26,259 --> 00:03:27,379 mirarla, a ver 84 00:03:27,379 --> 00:03:29,319 si vais a administración 85 00:03:29,319 --> 00:03:32,099 y pincháis en server status 86 00:03:32,099 --> 00:03:34,319 hay dos opciones, que os salga esto 87 00:03:34,319 --> 00:03:34,979 o que os dé un error 88 00:03:34,979 --> 00:03:37,159 vale, pues este error 89 00:03:37,159 --> 00:03:40,319 conseguí averiguar como se quitaba y lo apunté 90 00:03:40,319 --> 00:03:42,500 en una chuleta que tengo que tener ahí, ahora lo miramos 91 00:03:42,500 --> 00:03:43,939 entonces, ahí ver 92 00:03:43,939 --> 00:03:46,539 ahora miro la chuleta 93 00:03:46,539 --> 00:03:48,400 a ver, porque había que cambiar una cosa de Windows 94 00:03:48,400 --> 00:03:50,099 Era un tema de la fecha de Windows 95 00:03:50,099 --> 00:03:52,240 Había que cambiar, no, de la ubicación 96 00:03:52,240 --> 00:03:54,599 Para que esto salga, curiosamente 97 00:03:54,599 --> 00:03:56,599 Hay que irse a Windows y cambiar no sé qué de la ubicación 98 00:03:56,599 --> 00:03:58,919 Pero bueno, ahora lo miro, porque lo tengo apuntado en la chuleta 99 00:03:58,919 --> 00:04:00,599 Pero si os acordáis 100 00:04:00,599 --> 00:04:02,240 Uy, mi ordenador se ha marcado 101 00:04:02,240 --> 00:04:03,659 Vale 102 00:04:03,659 --> 00:04:06,719 Si os acordáis de la versión que habéis instalado 103 00:04:06,719 --> 00:04:07,759 No hace falta que entremos aquí 104 00:04:07,759 --> 00:04:10,659 En mi caso, como yo tengo la 8035 105 00:04:10,659 --> 00:04:12,740 Voy a coger un driver consonante con ese 106 00:04:12,740 --> 00:04:14,460 No va a haber cambios con 107 00:04:14,460 --> 00:04:15,800 Lo que hagáis vosotros 108 00:04:15,800 --> 00:04:20,220 Bueno 109 00:04:20,220 --> 00:04:22,879 Me llama la atención el hombre 110 00:04:22,879 --> 00:04:26,000 Sí, sí, sí 111 00:04:26,000 --> 00:04:28,579 Sí, a todos 112 00:04:28,579 --> 00:04:31,120 Pero si lo de meternos aquí era solamente 113 00:04:31,120 --> 00:04:33,060 Para que vierais la versión que tenéis 114 00:04:33,060 --> 00:04:35,519 Pero esa versión en la propia carpeta 115 00:04:35,519 --> 00:04:36,639 Yo creo que la tenéis puesta 116 00:04:36,639 --> 00:04:38,319 O la podéis averiguar 117 00:04:38,319 --> 00:04:40,420 Es la 9 ya, en el instalador 118 00:04:40,420 --> 00:04:43,079 8.0.44 119 00:04:43,079 --> 00:04:45,819 Vale, pues os cogeis un driver 120 00:04:45,819 --> 00:04:47,220 En consonancia con ese y ya está 121 00:04:47,220 --> 00:04:49,120 Para que no salga este error 122 00:04:49,120 --> 00:04:51,060 Ya en algún momento mire la chuleta y lo quitamos 123 00:04:51,060 --> 00:04:52,720 Es una tontería, no merece la pena 124 00:04:52,720 --> 00:04:54,259 Pararnos ahora 125 00:04:54,259 --> 00:04:58,100 Bueno, pues entonces, estábamos aquí en el repositorio este 126 00:04:58,100 --> 00:05:00,879 La 8 127 00:05:00,879 --> 00:05:03,439 Que salen estas 128 00:05:03,439 --> 00:05:05,399 Bueno, yo me voy a coger la 8033 129 00:05:05,399 --> 00:05:06,579 Por ejemplo 130 00:05:06,579 --> 00:05:11,439 Uy, que mal rollo 131 00:05:11,439 --> 00:05:11,879 Ah, no, no 132 00:05:11,879 --> 00:05:14,000 Hay una nueva versión, 9.5 133 00:05:14,000 --> 00:05:15,860 A la copiamos 134 00:05:15,860 --> 00:05:16,620 Y 135 00:05:16,620 --> 00:05:20,800 No me acuerdo 136 00:05:20,800 --> 00:05:22,360 La acabo de mirar, creo que era 35 137 00:05:22,360 --> 00:05:23,779 Pero da igual, si es que es todo lo mismo 138 00:05:23,779 --> 00:05:26,120 Puedes poner otro driver que te va a funcionar igual 139 00:05:26,120 --> 00:05:56,939 Vale, pues esta ya la tenemos 140 00:05:56,939 --> 00:05:59,300 Y ya se os habrán abierto 141 00:05:59,300 --> 00:06:00,459 Unas dependencias de maven 142 00:06:00,459 --> 00:06:01,540 Donde está el conector 143 00:06:01,540 --> 00:06:03,180 Y un protobuf este 144 00:06:03,180 --> 00:06:06,240 Que no sabemos lo que es y nos importa 145 00:06:06,240 --> 00:06:08,360 Pero debe ser algo de lo que tira el conector 146 00:06:08,360 --> 00:06:09,360 Ya está 147 00:06:09,360 --> 00:06:12,540 Ahora ya sí que sí, vamos a empezar una aplicación 148 00:06:12,540 --> 00:06:13,939 Para hacer cosas con esta base de datos 149 00:06:13,939 --> 00:06:16,259 Como insertar coches, el CRUD de toda la vida 150 00:06:16,259 --> 00:06:18,079 Insertarlos, cambiar 151 00:06:18,079 --> 00:06:19,720 En esta base de datos es tan sencilla 152 00:06:19,720 --> 00:06:21,819 No tiene diferentes tablas 153 00:06:21,819 --> 00:06:23,279 Con lo cual pocas cosas podemos hacer 154 00:06:23,279 --> 00:06:26,339 Pero un CRUD básico de insertar, consultar, eliminar 155 00:06:26,339 --> 00:06:30,310 ¿Perdón? 156 00:06:33,560 --> 00:06:35,259 Sí, sí, sí, el primero que te ha salido 157 00:06:35,259 --> 00:06:36,420 En el repositorio de Maven 158 00:06:36,420 --> 00:06:39,060 Y luego ya te vas a la versión 8.0 159 00:06:39,060 --> 00:06:40,899 La que sea, que es la... y ya está 160 00:06:40,899 --> 00:06:42,819 Vale 161 00:06:42,819 --> 00:06:45,480 bueno, ahora ya sí que vamos a hacer 162 00:06:45,480 --> 00:06:47,160 un CRUD básico de esta aplicación 163 00:06:47,160 --> 00:06:49,540 pero bueno, vamos, aunque sea una base 164 00:06:49,540 --> 00:06:50,579 de datos tan pequeñita 165 00:06:50,579 --> 00:06:53,680 vamos a hacer un intento 166 00:06:53,680 --> 00:06:55,579 de diseño un poco más 167 00:06:55,579 --> 00:06:57,259 profesional, entonces un 168 00:06:57,259 --> 00:06:59,639 intento de diseño un poquito más profesional 169 00:06:59,639 --> 00:07:01,279 implica que hagamos 170 00:07:01,279 --> 00:07:03,779 un modelo en consonancia con la base de datos 171 00:07:03,779 --> 00:07:05,540 me estás mirando con cara 172 00:07:05,540 --> 00:07:07,779 de que me vas a 173 00:07:07,779 --> 00:07:08,980 sacar la puntilla de algo 174 00:07:08,980 --> 00:07:12,660 vale, pues entonces 175 00:07:12,660 --> 00:07:14,660 Vaya modelo más tonto 176 00:07:14,660 --> 00:07:15,759 Una clase 177 00:07:15,759 --> 00:07:18,399 Ventas, ya está 178 00:07:18,399 --> 00:07:21,040 Pues venga, vamos a hacer nuestra clase 179 00:07:21,040 --> 00:07:21,680 Ventas 180 00:07:21,680 --> 00:07:43,649 Venga, nuestra clase 181 00:07:43,649 --> 00:07:45,029 Ventas, por ejemplo 182 00:07:45,029 --> 00:07:47,529 Y ventas que tiene 183 00:07:47,529 --> 00:07:49,649 Pues ventas tiene 184 00:07:49,649 --> 00:08:05,899 A ver, los nombres de clases 185 00:08:05,899 --> 00:08:08,079 Siempre deberían empezar con mayúscula 186 00:08:08,079 --> 00:08:12,439 No, no, no, perdón 187 00:08:12,439 --> 00:08:13,939 Es que yo aquí lo he puesto muy alegremente 188 00:08:13,939 --> 00:08:15,860 Aquí el nombre bonito 189 00:08:15,860 --> 00:08:17,060 Es Venta 190 00:08:17,060 --> 00:08:20,240 Lo va a entender quién 191 00:08:20,240 --> 00:08:21,860 Es que aquí no hay nadie entendiendo 192 00:08:21,860 --> 00:08:24,560 Ya, pero es que 193 00:08:24,560 --> 00:08:25,639 Ese mapeo lo haces tú 194 00:08:25,639 --> 00:08:28,639 Claro, otra cosa es que pusiéramos una capa 195 00:08:28,639 --> 00:08:30,620 Adicional, entonces ahí tendríamos que decirle 196 00:08:30,620 --> 00:08:32,820 Oye, que la clase ventas se corresponde con la tabla 197 00:08:32,820 --> 00:08:34,360 Ventas, eso tienes que decir 198 00:08:34,360 --> 00:08:36,500 Claro, no lo va a coger directamente por el nombre 199 00:08:36,500 --> 00:08:38,700 A menos que tú lo configures 200 00:08:38,700 --> 00:08:40,299 De manera que te digas que se llama igual 201 00:08:40,299 --> 00:08:42,120 Vale, pero ahora mismo 202 00:08:42,120 --> 00:08:44,360 Lo hacemos todos nosotros 203 00:08:44,360 --> 00:08:45,759 Entonces vamos a 204 00:08:45,759 --> 00:08:47,600 A ver, ¿qué te has perdido ahora? 205 00:08:47,600 --> 00:08:48,820 No, no, no, perdones 206 00:08:48,820 --> 00:08:52,220 la 8033 207 00:08:52,220 --> 00:08:53,200 he cogido yo 208 00:08:53,200 --> 00:08:55,799 la 80 cualquiera 209 00:08:55,799 --> 00:08:57,019 si 210 00:08:57,019 --> 00:09:00,100 vale, entonces es verdad, ventas es un nombre 211 00:09:00,100 --> 00:09:01,179 mucho mejor que ventas 212 00:09:01,179 --> 00:09:02,519 para un modelo 213 00:09:02,519 --> 00:09:05,379 string y aquí teníamos 214 00:09:05,379 --> 00:09:07,639 el nif del 215 00:09:07,639 --> 00:09:09,580 vende del comprador 216 00:09:09,580 --> 00:09:11,899 aquí en la base de datos 217 00:09:11,899 --> 00:09:13,179 hemos puesto 218 00:09:13,179 --> 00:09:16,039 nif comprador 219 00:09:16,039 --> 00:09:16,919 con barra baja 220 00:09:16,919 --> 00:09:18,679 porque para MySQL 221 00:09:18,679 --> 00:09:21,500 los identificadores, las mayúsculas 222 00:09:21,500 --> 00:09:23,460 y las minúsculas, pues no existen 223 00:09:23,460 --> 00:09:24,360 entonces 224 00:09:24,360 --> 00:09:27,220 NIF comprador con la C mayúscula 225 00:09:27,220 --> 00:09:29,039 no significaría nada, no pega 226 00:09:29,039 --> 00:09:30,720 entonces siempre se suele poner con 227 00:09:30,720 --> 00:09:32,840 barras bajas, pero sin embargo en Java 228 00:09:32,840 --> 00:09:35,019 en Java lo de la barra baja 229 00:09:35,019 --> 00:09:36,620 queda muy feo, aquí 230 00:09:36,620 --> 00:09:38,559 ¿os gusta la barra baja? 231 00:09:38,799 --> 00:09:40,919 A mí me da igual, pero es que no entiendo porque hay que estar cambiando 232 00:09:40,919 --> 00:09:42,580 de estándar en cada segundo 233 00:09:42,580 --> 00:09:44,919 de aplicación distinta, y luego usas Python 234 00:09:44,919 --> 00:09:46,600 y lo mismo, que hay que decir barra baja 235 00:09:46,600 --> 00:09:49,059 A ver, son como 236 00:09:49,059 --> 00:09:51,159 convenios 237 00:09:51,159 --> 00:09:52,659 que vamos interiorizando 238 00:09:52,659 --> 00:09:54,879 porque lo llevas viendo y haciendo siempre 239 00:09:54,879 --> 00:09:56,500 y ya lo interiorizas y te mueven de ahí 240 00:09:56,500 --> 00:09:57,779 y ya te da ansiedad 241 00:09:57,779 --> 00:10:11,940 Así es más bonito 242 00:10:11,940 --> 00:10:14,639 Que yo no es que esté diciendo 243 00:10:14,639 --> 00:10:16,639 que usar en Java la barra baja jamás 244 00:10:16,639 --> 00:10:18,639 No, a mí particularmente 245 00:10:19,179 --> 00:10:20,899 me parece feo 246 00:10:20,899 --> 00:10:22,740 y no suelo verlo. 247 00:10:22,919 --> 00:10:24,879 No suelo ver identificadores de propiedades 248 00:10:24,879 --> 00:10:26,720 con barra baja. Serían siempre 249 00:10:26,720 --> 00:10:27,960 más así. ¿Vale? 250 00:10:31,899 --> 00:10:32,779 Sí, con las 251 00:10:32,779 --> 00:10:34,720 constantes sí, como convenio. La barra baja 252 00:10:34,720 --> 00:10:36,559 al principio. Sí, pero bueno, 253 00:10:36,659 --> 00:10:39,000 claro, pues tú ves la barra baja al principio y rápidamente 254 00:10:39,000 --> 00:10:40,480 te das cuenta de que eso es una constante. 255 00:10:40,960 --> 00:10:42,600 Vale, pero en identificadores de propiedades 256 00:10:42,600 --> 00:10:43,539 genéricas y variables, 257 00:10:44,679 --> 00:10:46,899 se puede usar, pero no sé, como que no hay hábito. 258 00:10:48,759 --> 00:10:50,840 Vale, pues NIF comprador y teníamos 259 00:10:50,840 --> 00:10:52,539 además el coche, ¿verdad? 260 00:10:53,799 --> 00:10:54,779 Y el color. 261 00:10:55,080 --> 00:10:55,179 Sí. 262 00:10:56,200 --> 00:10:56,600 Y 263 00:10:56,600 --> 00:11:02,519 si esto fuera un récord, 264 00:11:02,679 --> 00:11:03,919 podríamos dejarlo así, 265 00:11:04,679 --> 00:11:06,940 pero como no sabemos si vamos a modificar 266 00:11:06,940 --> 00:11:08,320 que seguramente tendremos que modificar, 267 00:11:09,080 --> 00:11:10,500 pues getter y setter y a tirar. 268 00:11:10,659 --> 00:11:12,519 A menos que pusiéramos longbox, 269 00:11:12,620 --> 00:11:14,559 que nos da pereza poner la dependencia de longbox. 270 00:11:17,019 --> 00:11:18,200 La que te genera 271 00:11:18,200 --> 00:11:20,080 una dependencia que pones y que 272 00:11:20,080 --> 00:11:22,340 la anotas y te genera los getter y los setter 273 00:11:22,340 --> 00:11:23,980 luego en tiempo de 274 00:11:23,980 --> 00:11:26,820 Tú no los ves, pero están ahí. 275 00:11:27,980 --> 00:11:28,240 ¡Hala! 276 00:11:31,240 --> 00:11:31,639 Sin 277 00:11:31,639 --> 00:11:34,519 constructor y sin nada, por pura 278 00:11:34,519 --> 00:11:36,659 vaguería. Si luego lo necesitamos, 279 00:11:37,320 --> 00:11:38,039 pues lo 280 00:11:38,039 --> 00:11:39,639 ponemos. 281 00:11:41,960 --> 00:11:43,919 Vale, ya tenemos nuestra clase de modelo, que menos. 282 00:11:44,000 --> 00:11:45,480 Si trabajamos con ventas, que menos. 283 00:11:46,059 --> 00:11:47,220 Vale, pero es que ahora además 284 00:11:47,220 --> 00:11:50,080 de trabajar con ventas, vamos a hacer 285 00:11:50,080 --> 00:11:51,100 un CRUD. 286 00:11:52,240 --> 00:11:53,480 Es decir, un acceso a datos. 287 00:11:53,480 --> 00:12:17,440 Pues, hombre, vamos a también hacer un intento al menos de diseño elegante. Pues, como hacemos capa de acceso a datos, qué menos que hacer un DAO, ¿verdad? ¿Qué es el DAO? El DAO es una clase que te recoge los métodos relacionados con la persistencia de una entidad en concreto. 288 00:12:17,440 --> 00:12:19,759 tenemos una entidad venta 289 00:12:19,759 --> 00:12:21,759 esta entidad venta quiero 290 00:12:21,759 --> 00:12:24,340 que sea persistente 291 00:12:24,340 --> 00:12:26,360 ¿qué significa quiero que sea persistente? 292 00:12:26,639 --> 00:12:28,259 quiero que mi aplicación trabaje 293 00:12:28,259 --> 00:12:30,240 con ella pero que 294 00:12:30,240 --> 00:12:31,299 lo que le pase 295 00:12:31,299 --> 00:12:33,519 se refleje en la base de datos 296 00:12:33,519 --> 00:12:36,159 ¿vale? y que quiero que cuando arranque 297 00:12:36,159 --> 00:12:37,919 la aplicación pues 298 00:12:37,919 --> 00:12:39,620 ventas 299 00:12:39,620 --> 00:12:41,700 arranque con lo que haya en la base de datos 300 00:12:41,700 --> 00:12:44,120 quiero eso, significa que quiero que sea persistente 301 00:12:44,120 --> 00:12:46,159 esta entidad, eso significa 302 00:12:46,159 --> 00:12:47,700 que va a haber que hacer operaciones 303 00:12:47,700 --> 00:12:49,159 de acceso a la base de datos 304 00:12:49,159 --> 00:12:52,639 pues hombre, un diseño elegante 305 00:12:52,639 --> 00:12:54,399 sería, voy a recoger 306 00:12:54,399 --> 00:12:56,360 todas esas funcionalidades 307 00:12:56,360 --> 00:12:58,120 de acceso a la base de datos 308 00:12:58,120 --> 00:12:59,440 en una única clase 309 00:12:59,440 --> 00:13:01,679 y como esa clase va a ser 310 00:13:01,679 --> 00:13:03,460 funcionalidades de acceso a la base de datos 311 00:13:03,460 --> 00:13:04,779 para esta entidad 312 00:13:04,779 --> 00:13:07,179 pues que se llame VentaData 313 00:13:07,179 --> 00:13:09,159 VentaDataAccessObject 314 00:13:09,159 --> 00:13:11,759 ¿que lo podemos diseñar de otra manera? 315 00:13:11,919 --> 00:13:13,039 pues si, lo podemos diseñar de otra manera 316 00:13:13,039 --> 00:13:16,059 pero es más o menos la idea de diseño general 317 00:13:16,059 --> 00:13:19,279 cuando se hace una aplicación 318 00:13:19,279 --> 00:13:20,460 pues que tiene persistencia 319 00:13:20,460 --> 00:13:22,639 pues venga, vamos a meter 320 00:13:22,639 --> 00:13:28,419 el paquete donde van a ir 321 00:13:28,419 --> 00:13:29,860 estas clases 322 00:13:29,860 --> 00:13:32,080 de nuevo 323 00:13:32,080 --> 00:13:33,299 vamos a 324 00:13:33,299 --> 00:13:35,700 perdón 325 00:13:35,700 --> 00:13:40,539 vamos a desacoplar todo lo que podamos 326 00:13:40,539 --> 00:13:41,960 ¿qué es 327 00:13:41,960 --> 00:13:44,360 desacoplar en general? la idea de desacoplar 328 00:13:44,360 --> 00:13:46,100 es todo lo que 329 00:13:46,100 --> 00:13:47,840 podamos, separar 330 00:13:47,840 --> 00:13:50,080 interfaz de implementación 331 00:13:50,080 --> 00:13:51,139 mejor 332 00:13:51,139 --> 00:13:54,000 en general, tampoco hace falta 333 00:13:54,000 --> 00:13:56,539 pasarse, pero desacoplar 334 00:13:56,539 --> 00:13:58,799 significa, voy a separar 335 00:13:58,799 --> 00:14:00,620 la API que ofrezco 336 00:14:00,620 --> 00:14:01,580 y que un tío me llama 337 00:14:01,580 --> 00:14:03,639 y que un tío va a usar para llamarme 338 00:14:03,639 --> 00:14:06,100 voy a separarla de la implementación 339 00:14:06,100 --> 00:14:07,860 es decir, desacoplo 340 00:14:07,860 --> 00:14:09,899 si la aplicación está desacoplada 341 00:14:09,899 --> 00:14:12,039 va a ser mucho más fácil hacer los cambios 342 00:14:12,039 --> 00:14:13,639 bueno, pues entonces, este DAO 343 00:14:13,639 --> 00:14:16,200 aquí vamos a meter una interfaz solo 344 00:14:16,200 --> 00:14:18,120 con lo que yo voy a querer hacer 345 00:14:18,120 --> 00:14:19,799 con ventas 346 00:14:19,799 --> 00:14:21,799 en la base de datos, una interfaz 347 00:14:21,799 --> 00:14:24,080 y luego ya haré su implementación 348 00:14:24,080 --> 00:14:24,919 ¿vale? 349 00:14:25,419 --> 00:14:27,679 pues venga, aquí vamos a meter 350 00:14:27,679 --> 00:14:30,120 una nueva interfaz 351 00:14:30,120 --> 00:14:32,240 que sea 352 00:14:32,240 --> 00:14:33,879 ventadao 353 00:14:35,059 --> 00:14:41,120 ala 354 00:14:41,120 --> 00:14:42,659 y aquí ya 355 00:14:42,659 --> 00:14:45,019 decido que me va a interesar 356 00:14:45,019 --> 00:14:46,799 a mí hacer con estas 357 00:14:46,799 --> 00:14:48,879 ventas, relacionado 358 00:14:48,879 --> 00:14:49,559 con la base de datos 359 00:14:49,559 --> 00:14:50,419 tú 360 00:14:50,419 --> 00:14:53,340 o un desarrollador más 361 00:14:53,340 --> 00:14:54,120 otra clase 362 00:14:54,120 --> 00:14:57,360 en otra clase que se llame 363 00:14:57,360 --> 00:14:59,519 venta da o implementación, para que quede claro 364 00:14:59,519 --> 00:15:00,899 que esa es la implementación de venta da 365 00:15:00,899 --> 00:15:07,929 a ver, te ha quedado claro que 366 00:15:07,929 --> 00:15:10,809 entre muchas de las cosas que vamos a hacer con los objetos 367 00:15:10,809 --> 00:15:12,610 venta, va a ser llevarlos 368 00:15:12,610 --> 00:15:14,070 y recogerlos de la base de datos 369 00:15:14,070 --> 00:15:16,629 luego parte de las funcionalidades de la aplicación va a ser 370 00:15:16,629 --> 00:15:18,629 acceder a la base de datos, pues vamos a meter 371 00:15:18,629 --> 00:15:20,210 esas funcionalidades juntitas en algún sitio 372 00:15:20,210 --> 00:15:22,889 vale, pues en lugar de meterlas 373 00:15:22,889 --> 00:15:24,110 en un sitio y ya 374 00:15:24,110 --> 00:15:27,049 vamos a separarlas en una interfaz 375 00:15:27,049 --> 00:15:27,990 y una implementación 376 00:15:27,990 --> 00:15:29,750 vale 377 00:15:29,750 --> 00:15:32,909 pues entonces, ¿qué queremos hacer 378 00:15:32,909 --> 00:15:35,129 con las ventas? pues por ejemplo 379 00:15:35,129 --> 00:15:37,490 queremos insertar 380 00:15:37,490 --> 00:15:39,450 una venta 381 00:15:39,450 --> 00:15:53,470 y por ejemplo 382 00:15:53,470 --> 00:15:55,610 queremos recuperar una venta 383 00:15:55,610 --> 00:15:57,190 podríamos poner aquí muchos métodos 384 00:15:57,190 --> 00:15:59,309 por su clave 385 00:15:59,309 --> 00:16:10,759 o por ejemplo podemos querer 386 00:16:10,759 --> 00:16:12,419 recuperar todas las ventas 387 00:16:12,419 --> 00:16:14,679 porque estamos arrancando la aplicación 388 00:16:14,679 --> 00:16:18,779 pues por ejemplo a lo mejor queremos 389 00:16:18,779 --> 00:16:19,679 hacer esto 390 00:16:19,679 --> 00:16:24,279 find all, esta no tendría 391 00:16:24,279 --> 00:16:26,559 o ya bueno que nos venimos arriba 392 00:16:26,559 --> 00:16:27,659 pues vamos a 393 00:16:27,659 --> 00:16:30,700 por ejemplo borrar 394 00:16:30,700 --> 00:16:44,490 bueno pues típica 395 00:16:44,490 --> 00:16:46,450 clase dao 396 00:16:46,450 --> 00:16:48,649 a ver que era esta cosa tan bonita que hacíais 397 00:16:48,649 --> 00:16:53,240 Vale, una típica clase DAO 398 00:16:53,240 --> 00:16:54,679 ¿Cómo se implementa? 399 00:16:55,220 --> 00:16:56,440 Pues ya veremos 400 00:16:56,440 --> 00:16:58,860 Nosotros, ¿cómo la vamos a implementar? 401 00:16:59,500 --> 00:17:01,159 Directamente con JDBC 402 00:17:01,159 --> 00:17:03,679 Pero eso es competencia de la implementación de DAO 403 00:17:03,679 --> 00:17:06,940 Vale, pues entonces aquí haríamos 404 00:17:06,940 --> 00:17:09,779 Y... 405 00:17:09,779 --> 00:17:14,160 Sí, se puede 406 00:17:14,160 --> 00:17:21,759 Punto DAO 407 00:17:21,759 --> 00:17:23,059 Implementación 408 00:17:23,059 --> 00:17:27,589 Y aquí ya haríamos una clase 409 00:17:27,589 --> 00:17:34,359 Venta DAO 410 00:17:34,359 --> 00:17:36,400 implementación 411 00:17:36,400 --> 00:17:38,819 y esta clase 412 00:17:38,819 --> 00:17:40,700 ahora ya si que va a ser 413 00:17:40,700 --> 00:17:42,660 la implementación 414 00:17:42,660 --> 00:17:44,859 de venta dao 415 00:17:44,859 --> 00:17:50,950 entonces 416 00:17:50,950 --> 00:17:55,509 al implementar venta dao 417 00:17:55,509 --> 00:17:57,609 pues ahora ya si que 418 00:17:57,609 --> 00:17:59,289 vamos a tener que darle cuerpo a esto 419 00:17:59,289 --> 00:18:01,690 y ahora ya para darle cuerpo 420 00:18:01,690 --> 00:18:02,869 a esto tendremos que ver 421 00:18:02,869 --> 00:18:05,130 como gestionamos las conexiones 422 00:18:05,130 --> 00:18:07,190 donde la ponemos la conexión 423 00:18:07,190 --> 00:18:10,029 donde la ponemos y como la gestionamos 424 00:18:10,029 --> 00:18:11,670 y luego ya 425 00:18:11,670 --> 00:18:13,450 como usamos esa conexión 426 00:18:13,450 --> 00:18:15,829 son dos problemas, uno es la gestión de la conexión 427 00:18:15,829 --> 00:18:17,329 a la base de datos, que no es trivial 428 00:18:17,329 --> 00:18:19,509 y otro es 429 00:18:19,509 --> 00:18:21,190 una vez que tengo esa conexión 430 00:18:21,190 --> 00:18:22,650 que ya veré de donde la saco 431 00:18:22,650 --> 00:18:25,390 hacer las operaciones 432 00:18:25,390 --> 00:18:27,890 que esto ya es muy sencillo 433 00:18:27,890 --> 00:18:28,109 ¿vale? 434 00:18:29,130 --> 00:18:31,569 y ya está, y este sería el JDBC 435 00:18:31,569 --> 00:18:33,529 a pelo, y es que no tendría 436 00:18:33,529 --> 00:18:35,569 más que esto que lo completaremos el próximo día 437 00:18:35,569 --> 00:18:37,210 que se completa rápido 438 00:18:37,210 --> 00:18:39,789 luego ya a partir de ahí es irle poniendo algunas capitas 439 00:18:39,789 --> 00:18:41,950 para que todo este código que nos queda aquí 440 00:18:41,950 --> 00:18:43,150 que para cualquier tontería 441 00:18:43,150 --> 00:18:44,690 sea un insert, sea un find 442 00:18:44,690 --> 00:18:47,029 al final acaban siendo un montón de tries 443 00:18:47,029 --> 00:18:48,029 y un montón de cosas 444 00:18:48,029 --> 00:18:51,069 pues para que ese código se quede un poquito más reducido 445 00:18:51,069 --> 00:18:52,529 le vamos poniendo capas 446 00:18:52,529 --> 00:18:53,549 dime 447 00:18:53,549 --> 00:18:55,869 es un poco corto la pregunta 448 00:18:55,869 --> 00:18:56,930 bueno, creo 449 00:18:56,930 --> 00:19:01,109 ¿por qué usamos inter en vez de int? 450 00:19:02,869 --> 00:19:03,369 a ver 451 00:19:03,369 --> 00:19:05,789 bueno 452 00:19:05,789 --> 00:19:08,730 el envolvente al ser un objeto 453 00:19:08,730 --> 00:19:10,569 pues facilita 454 00:19:10,569 --> 00:19:12,670 su uso en colecciones, en streams 455 00:19:12,670 --> 00:19:14,630 en un montón de clases 456 00:19:14,630 --> 00:19:15,130 de Java 457 00:19:15,130 --> 00:19:18,269 que no permiten uso de primitivos 458 00:19:18,269 --> 00:19:20,430 entonces usar el envolvente 459 00:19:20,430 --> 00:19:21,569 es que si no 460 00:19:21,569 --> 00:19:24,390 Java muchas veces ese propio int 461 00:19:24,390 --> 00:19:26,829 ya lo va a promocionar él al envolvente 462 00:19:26,829 --> 00:19:28,609 entonces hombre 463 00:19:28,609 --> 00:19:30,109 pues integer ¿por qué 464 00:19:30,109 --> 00:19:32,069 lo uso? 465 00:19:32,069 --> 00:19:34,509 es más bonito, más completo 466 00:19:34,509 --> 00:19:41,019 pues de nuevo depende del contexto 467 00:19:41,019 --> 00:19:43,019 pero yo lo veo más 468 00:19:43,019 --> 00:19:44,940 te lo vas a encontrar más en una aplicación 469 00:19:44,940 --> 00:19:46,819 grande y gorda como normalmente ese 470 00:19:46,819 --> 00:19:48,880 al final acabe 471 00:19:48,880 --> 00:19:51,359 metiéndose a lo mejor en alguna colección 472 00:19:51,359 --> 00:19:53,079 en algún otro sitio, en algún stream 473 00:19:53,079 --> 00:19:55,019 pues es que va a promocionar a integer 474 00:19:55,019 --> 00:19:55,660 igualmente 475 00:19:55,660 --> 00:19:58,839 y vas a poder hacer cosas con él que no podías hacer 476 00:19:58,839 --> 00:20:00,759 con un primitivo, porque integer tiene métodos 477 00:20:00,759 --> 00:20:01,640 claro, porque es un objeto 478 00:20:01,640 --> 00:20:03,859 entonces pues hombre es más completo 479 00:20:03,859 --> 00:20:06,259 y tampoco es que vayas a perder memoria 480 00:20:06,259 --> 00:20:08,059 por un tubo por poner integer en vez de int 481 00:20:08,059 --> 00:20:12,880 bueno, no sé 482 00:20:12,880 --> 00:20:14,779 queda mejor 483 00:20:14,779 --> 00:20:15,839 más completito 484 00:20:15,839 --> 00:20:18,700 y a la vista 485 00:20:18,700 --> 00:20:20,259 queda mucho más claro 486 00:20:20,259 --> 00:20:22,480 un integer es que lo ves muy grande y muy gordo 487 00:20:22,480 --> 00:20:24,819 integer, int es como más pequeño 488 00:20:24,819 --> 00:20:26,200 y más corto, no son otras letras 489 00:20:26,200 --> 00:20:28,579 entonces parece una chorrada 490 00:20:28,579 --> 00:20:30,480 pero no lo es, que cuando tú abres 491 00:20:30,480 --> 00:20:32,660 una aplicación, porque vosotros no vais 492 00:20:32,660 --> 00:20:33,799 a hacer aplicaciones desde cero 493 00:20:33,799 --> 00:20:36,000 vais a abrir aplicaciones que van a ser 494 00:20:36,000 --> 00:20:38,319 un galimatías, cuando te abres una aplicación 495 00:20:38,319 --> 00:20:40,140 y más o menos te puedes hacer 496 00:20:40,140 --> 00:20:42,059 una idea general de por dónde van los tiros 497 00:20:42,059 --> 00:20:43,640 ostras, esa aplicación 498 00:20:43,640 --> 00:20:46,000 está muy bien hecha y tú tienes mucho ganado 499 00:20:46,000 --> 00:20:48,200 entonces, usar envolventes 500 00:20:48,200 --> 00:20:50,319 en lugar de tipos primitivos, es la tontería 501 00:20:50,319 --> 00:20:51,920 pero facilita eso, facilita 502 00:20:51,920 --> 00:20:53,519 la elegibilidad del código también 503 00:20:53,519 --> 00:20:55,579 son pequeños factores 504 00:20:55,579 --> 00:20:56,720 que al 505 00:20:56,720 --> 00:20:59,599 que, pero de nuevo 506 00:20:59,599 --> 00:21:01,059 es el efecto 507 00:21:01,059 --> 00:21:03,680 lo he interiorizado, siempre lo hago así, lo veo 508 00:21:03,680 --> 00:21:05,920 hacer así y ya, pues bueno 509 00:21:05,920 --> 00:21:07,819 al final se te olvida un poco porque lo haces 510 00:21:07,819 --> 00:21:09,180 pero para mí tiene sentido 511 00:21:09,180 --> 00:21:11,779 eso, que hay un montón de estructuras de Java 512 00:21:11,779 --> 00:21:14,019 que te van a promocionar el envolvente igualmente 513 00:21:14,019 --> 00:21:15,500 y que es mucho más flexible 514 00:21:15,500 --> 00:21:19,650 no sé si te he convencido, pero bueno 515 00:21:19,650 --> 00:21:21,809 eh...