1 00:00:00,000 --> 00:00:03,120 música para animales 2 00:00:03,120 --> 00:00:04,059 pues 3 00:00:04,059 --> 00:00:07,320 para ver cómo ejecutar 4 00:00:07,320 --> 00:00:09,099 sentencias, cómo acceder a una base 5 00:00:09,099 --> 00:00:10,160 de datos relacional 6 00:00:10,160 --> 00:00:13,220 con la capa básica 7 00:00:13,220 --> 00:00:14,900 o sea, lo más a pelo posible 8 00:00:14,900 --> 00:00:16,699 que se puede hacer 9 00:00:16,699 --> 00:00:18,719 que te da el mayor control 10 00:00:18,719 --> 00:00:21,739 mediante 11 00:00:21,739 --> 00:00:23,160 JDBC, pues nos habíamos 12 00:00:23,160 --> 00:00:25,399 hecho una aplicación chorra mínima 13 00:00:25,399 --> 00:00:27,420 con un modelo que solo tenía una clase 14 00:00:27,420 --> 00:00:29,239 con coches 15 00:00:29,239 --> 00:00:32,100 y con ventas de coches 16 00:00:32,100 --> 00:00:34,020 y ya está, entonces esta era 17 00:00:34,020 --> 00:00:36,119 la entidad patatera que teníamos 18 00:00:36,119 --> 00:00:37,240 solamente esta entidad 19 00:00:37,240 --> 00:00:40,159 entonces el diseño 20 00:00:40,159 --> 00:00:41,780 más habitual para 21 00:00:41,780 --> 00:00:43,479 desacoplar lo más posible 22 00:00:43,479 --> 00:00:46,179 la parte de acceso a datos con el resto 23 00:00:46,179 --> 00:00:47,899 de la aplicación, el diseño más habitual 24 00:00:47,899 --> 00:00:50,119 es el patrón DAO, en el cual 25 00:00:50,119 --> 00:00:51,659 para cada entidad 26 00:00:51,659 --> 00:00:54,159 persistente o que queremos que lo sea 27 00:00:54,159 --> 00:00:56,159 nos hacemos una clase DAO 28 00:00:56,159 --> 00:00:57,479 que aglutina 29 00:00:57,479 --> 00:00:59,539 los métodos 30 00:00:59,539 --> 00:01:00,939 de acceso a la base de datos 31 00:01:00,939 --> 00:01:02,179 y luego 32 00:01:02,179 --> 00:01:05,700 esa clase DAO a su vez le hacemos el split 33 00:01:05,700 --> 00:01:07,379 interfaz 34 00:01:07,379 --> 00:01:08,579 implementación 35 00:01:08,579 --> 00:01:11,980 y así en la implementación 36 00:01:11,980 --> 00:01:13,180 se esconde 37 00:01:13,180 --> 00:01:15,859 todos los detalles técnicos 38 00:01:15,859 --> 00:01:17,180 del acceso a la base de datos 39 00:01:17,180 --> 00:01:19,739 y en la interfaz se da la referencia 40 00:01:19,739 --> 00:01:21,500 y desde cualquier punto de la aplicación 41 00:01:21,500 --> 00:01:23,540 tú tiras de la referencia y luego ya sabéis 42 00:01:23,540 --> 00:01:24,840 que en tiempo de ejecución 43 00:01:24,840 --> 00:01:27,019 se coge la implementación 44 00:01:27,019 --> 00:01:28,640 claro, tiempo de ejecución, lo que sea 45 00:01:28,640 --> 00:01:31,099 pues bueno, patrón habitual, pues ya está 46 00:01:31,099 --> 00:01:33,260 pues bueno, hacemos ese patroncillo 47 00:01:33,260 --> 00:01:34,120 adaptado a esto 48 00:01:34,120 --> 00:01:36,280 y teníamos nuestra clase DAO 49 00:01:36,280 --> 00:01:37,900 que habíamos decidido 50 00:01:37,900 --> 00:01:40,159 estos cuatro métodos, por ejemplo 51 00:01:40,159 --> 00:01:42,739 pero bueno, podrían ser más 52 00:01:42,739 --> 00:01:44,959 estos cuatro métodos para hacer 53 00:01:44,959 --> 00:01:45,879 con las ventas 54 00:01:45,879 --> 00:01:48,280 y ahora teníamos que implementarla 55 00:01:48,280 --> 00:01:50,359 y aquí nos habíamos quedado 56 00:01:50,359 --> 00:01:53,379 entonces, ahora ya sí que vienen los detalles técnicos 57 00:01:53,379 --> 00:01:55,280 entonces, nuestros detalles técnicos 58 00:01:55,280 --> 00:01:57,260 Son acceso a la base de datos con JDBC 59 00:01:57,260 --> 00:01:59,040 Eso está claro, porque es que es así 60 00:01:59,040 --> 00:01:59,799 Sí o sí 61 00:01:59,799 --> 00:02:01,819 Es así o sí lo que hay en la base 62 00:02:01,819 --> 00:02:04,480 ¿Cómo funciona? 63 00:02:05,799 --> 00:02:07,079 Pues se crea 64 00:02:07,079 --> 00:02:08,840 Conexión, se ejecuta 65 00:02:08,840 --> 00:02:10,879 Sentencias y se cierra conexión 66 00:02:10,879 --> 00:02:12,759 Es que eso es lo que se puede hacer con JDBC 67 00:02:12,759 --> 00:02:15,020 Abrir conexión con la base de datos 68 00:02:15,020 --> 00:02:17,139 Ejecutar sentencias, cerrar conexiones 69 00:02:17,139 --> 00:02:19,300 Eso es lo que se puede hacer, sentencias de todo tipo 70 00:02:19,300 --> 00:02:21,340 De creación de esquemas 71 00:02:21,340 --> 00:02:22,879 Incluso no solo de consultas, etc 72 00:02:22,879 --> 00:02:23,780 Sentencias de todo tipo 73 00:02:23,780 --> 00:02:34,479 Vale, entonces eso se organiza llamando a métodos que como ya dijimos también se han diseñado conforme de nuevo al patrón API 74 00:02:34,479 --> 00:02:46,560 Pues JDK te ofrece la API JDBC donde hay unos métodos que son a los que todos llamamos para hacer esto que acabo de decir 75 00:02:46,560 --> 00:02:53,460 crear conexión, ejecutar sentencias y cerrar conexión, te ofrece unos métodos con un nombre unificado para hacer esto que acabo de decir 76 00:02:53,460 --> 00:02:58,259 pero claro, cada base de datos tendrá que implementar eso de una forma o de otra 77 00:02:58,259 --> 00:03:01,360 pues eso ya es responsabilidad nuestra 78 00:03:01,360 --> 00:03:05,620 y darle la implementación a esa API que me da el JDK 79 00:03:05,620 --> 00:03:09,340 y esa implementación como la damos a través del driver de la base de datos 80 00:03:09,340 --> 00:03:12,520 entonces ese driver como siempre es un conjunto de clases 81 00:03:12,520 --> 00:03:17,620 de las que dependemos y por tanto tenemos que inyectarlas 82 00:03:17,620 --> 00:03:20,560 como dependencia, pues lo habíamos hecho aquí 83 00:03:20,560 --> 00:03:24,930 Y ese driver era esto de aquí 84 00:03:24,930 --> 00:03:27,030 Vale 85 00:03:27,030 --> 00:03:29,210 Y ahora ya 86 00:03:29,210 --> 00:03:31,330 Que ya tenemos todas las clases 87 00:03:31,330 --> 00:03:32,349 Que necesitamos 88 00:03:32,349 --> 00:03:34,610 Podemos empezar a hacer el detalle técnico 89 00:03:34,610 --> 00:03:36,569 Bueno, primera cosa que hemos dicho 90 00:03:36,569 --> 00:03:38,729 Hacer la conexión 91 00:03:38,729 --> 00:03:39,430 Vale 92 00:03:39,430 --> 00:03:42,370 Hacer la conexión ya 93 00:03:42,370 --> 00:03:44,930 A nivel de código es nada, lógicamente 94 00:03:44,930 --> 00:03:45,490 Una línea 95 00:03:45,490 --> 00:03:48,530 Pero a nivel luego de 96 00:03:48,530 --> 00:03:50,409 Ejecución 97 00:03:50,409 --> 00:03:52,629 es de lo más pesado que hay 98 00:03:52,629 --> 00:03:54,629 porque a crear una conexión te tienes 99 00:03:54,629 --> 00:03:56,770 que entender con ese recurso 100 00:03:56,770 --> 00:03:58,530 que está en esa IP, ese sistema gestor de bases 101 00:03:58,530 --> 00:04:00,629 de datos y además todo lo que 102 00:04:00,629 --> 00:04:02,770 son intercambios 103 00:04:02,770 --> 00:04:04,650 orientados a conexión, pues son 104 00:04:04,650 --> 00:04:06,530 muy costosos establecerlos, tienes que estar 105 00:04:06,530 --> 00:04:08,469 ahí dándote la mano con el otro patatín 106 00:04:08,469 --> 00:04:10,810 bueno, lo que viene a ser, vosotros como expertos 107 00:04:10,810 --> 00:04:12,650 en redes 108 00:04:12,650 --> 00:04:14,210 y en todo, pues de CPIP 109 00:04:14,210 --> 00:04:16,790 el proceso hasta que estableces la conexión 110 00:04:16,790 --> 00:04:18,810 hay un agreement por el otro, por el no 111 00:04:18,810 --> 00:04:40,990 Pues en general, cualquier procedimiento que usa intercambios orientados a conexión son muy pesados. Vale, pues entonces, ¿cómo gestionamos eso de hacer la conexión? Pues la aplicación va a necesitar acceder a la base de datos muchas veces, muchas veces. 112 00:04:40,990 --> 00:04:43,310 entonces, para empezar tenemos 113 00:04:43,310 --> 00:04:44,689 dos 114 00:04:44,689 --> 00:04:47,009 orientan dos posibilidades 115 00:04:47,009 --> 00:04:48,449 que la aplicación sea multi hilo 116 00:04:48,449 --> 00:04:49,769 o que no lo sea 117 00:04:49,769 --> 00:04:52,730 si la aplicación no es multi hilo 118 00:04:52,730 --> 00:04:54,290 y solo hay un hilo de ejecución 119 00:04:54,290 --> 00:04:56,250 pues me puedo permitir 120 00:04:56,250 --> 00:04:57,930 me creo una conexión 121 00:04:57,930 --> 00:05:00,629 y dejo esa conexión ahí abierta todo el rato 122 00:05:00,629 --> 00:05:01,810 ¿vale? y ya está 123 00:05:01,810 --> 00:05:04,629 ¿por qué? porque si cada vez que yo voy a hacer 124 00:05:04,629 --> 00:05:06,550 un acceso en cada uno de estos métodos 125 00:05:06,550 --> 00:05:08,389 me conecto 126 00:05:08,389 --> 00:05:09,889 hago lo que sea y cierro 127 00:05:09,889 --> 00:05:12,050 bueno, vale, lo puedo hacer, pero 128 00:05:12,050 --> 00:05:14,629 es más pesado para la aplicación 129 00:05:14,629 --> 00:05:16,370 es más pesado, entonces en una aplicación 130 00:05:16,370 --> 00:05:18,290 multihilo, pues esa podría ser 131 00:05:18,290 --> 00:05:20,370 nuestra solución, creo la conexión 132 00:05:20,370 --> 00:05:22,350 y ahí la dejo, claro, pues tendríamos 133 00:05:22,350 --> 00:05:24,209 que ver luego en el contexto en el que trabajamos 134 00:05:24,209 --> 00:05:26,250 si eso es 135 00:05:26,250 --> 00:05:28,329 peligroso, no lo es, etcétera, pero sería 136 00:05:28,329 --> 00:05:29,569 computacionalmente lo mejor 137 00:05:29,569 --> 00:05:32,370 ¿vale? si la aplicación 138 00:05:32,370 --> 00:05:33,490 es multihilo 139 00:05:33,490 --> 00:05:35,910 pues hombre, ahí se complica la vida 140 00:05:35,910 --> 00:05:37,870 porque cada hilo 141 00:05:37,870 --> 00:05:40,069 Necesita su propia conexión 142 00:05:40,069 --> 00:05:41,769 No vamos a compartir ese recurso 143 00:05:41,769 --> 00:05:43,110 Que se bloquea 144 00:05:43,110 --> 00:05:46,529 Entonces, ¿qué solución nos...? 145 00:05:46,529 --> 00:05:49,870 Esa sería una 146 00:05:49,870 --> 00:05:51,629 Abrir y cerrar, pero leches 147 00:05:51,629 --> 00:05:54,189 Lo que carga es la aplicación 148 00:05:54,189 --> 00:05:58,050 Claro, hacer un 149 00:05:58,050 --> 00:05:59,269 Pool de conexiones 150 00:05:59,269 --> 00:06:02,189 ¿Vale? Un pool de conexiones 151 00:06:02,189 --> 00:06:04,069 Entonces, tú tienes un recurso 152 00:06:04,069 --> 00:06:06,029 Que cada vez que te quieres conectar 153 00:06:06,029 --> 00:06:07,430 Con él, tienes que hacer una conexión 154 00:06:07,430 --> 00:06:09,329 así, pam, pam, pam 155 00:06:09,329 --> 00:06:09,509 ¿no? 156 00:06:12,230 --> 00:06:14,189 ¿puedes establecer varias conexiones al mismo tiempo? 157 00:06:15,069 --> 00:06:16,550 claro, entonces 158 00:06:16,550 --> 00:06:19,329 tú tienes 159 00:06:19,329 --> 00:06:21,670 un recurso cualquiera 160 00:06:21,670 --> 00:06:23,370 en nuestro caso 161 00:06:23,370 --> 00:06:25,470 nuestra base de datos que está por ahí 162 00:06:25,470 --> 00:06:27,470 y cada 163 00:06:27,470 --> 00:06:29,430 hilo que necesita 164 00:06:29,430 --> 00:06:31,050 conectarse, pues 165 00:06:31,050 --> 00:06:33,149 ahí tiene que establecer una conexión 166 00:06:33,149 --> 00:06:34,990 ahora aquí este otro hilo en paralelo 167 00:06:34,990 --> 00:06:35,889 ¿qué he hecho? 168 00:06:35,889 --> 00:06:41,709 ah, que he movido con el codo 169 00:06:41,709 --> 00:06:42,970 las pizarritas, vale 170 00:06:42,970 --> 00:06:45,629 bueno, pues entonces 171 00:06:45,629 --> 00:06:47,649 se puede 172 00:06:47,649 --> 00:06:49,509 implementar, afortunadamente 173 00:06:49,509 --> 00:06:51,689 no lo tenemos que implementar nosotros en Java 174 00:06:51,689 --> 00:06:53,310 ya está hecho, como todo 175 00:06:53,310 --> 00:06:55,850 todo está hecho en clases que yo importo 176 00:06:55,850 --> 00:06:57,730 pues se puede implementar una clase 177 00:06:57,730 --> 00:06:59,750 ojalá hubiera una clase Java 178 00:06:59,750 --> 00:07:01,689 que me crea 179 00:07:02,410 --> 00:07:03,689 un conjunto 180 00:07:04,449 --> 00:07:05,170 de conexiones 181 00:07:05,170 --> 00:07:06,250 que las mantiene ahí 182 00:07:06,250 --> 00:07:08,550 y las va sirviendo 183 00:07:08,550 --> 00:07:10,529 al proceso que se lo pide 184 00:07:10,529 --> 00:07:13,089 ¿vale? entonces esto pues bueno 185 00:07:13,089 --> 00:07:14,850 te configura cuántas conexiones 186 00:07:14,850 --> 00:07:16,610 más y más quieres cada vez, porque hombre 187 00:07:16,610 --> 00:07:19,110 ¿cuántas te dejas 188 00:07:19,110 --> 00:07:21,230 en reserva siempre libres 189 00:07:21,230 --> 00:07:21,810 por si... 190 00:07:21,810 --> 00:07:26,870 no lo sé, eso sería otro tema 191 00:07:26,870 --> 00:07:29,050 de estudio en el que podríamos entrar 192 00:07:29,050 --> 00:07:30,810 pero vamos, tampoco vamos a entrar, es solamente 193 00:07:30,810 --> 00:07:33,209 la idea de lo que es un pool de conexiones y ya está 194 00:07:33,209 --> 00:07:35,149 entonces, esa clase 195 00:07:35,149 --> 00:07:36,790 afortunadamente ya está hecha 196 00:07:36,790 --> 00:07:38,790 nosotros la usamos y decimos 197 00:07:38,790 --> 00:07:41,209 dame un pool, yo ya tengo ahí mi pool 198 00:07:41,209 --> 00:07:43,230 y cada vez que quiera 199 00:07:43,230 --> 00:07:45,449 una conexión, se la pido 200 00:07:45,449 --> 00:07:47,209 al pool, entonces este 201 00:07:47,209 --> 00:07:49,149 ya gestiona pues todo el tema de la carga 202 00:07:49,149 --> 00:07:51,370 porque ya las tiene hechas, ya va cerrando 203 00:07:51,370 --> 00:07:53,230 cuando proceda, gestiona 204 00:07:53,230 --> 00:07:55,110 ya todo ese rollo, suponemos que bien 205 00:07:55,110 --> 00:07:56,850 suponemos que lo gestiona bien 206 00:07:56,850 --> 00:07:58,829 y nuestros silos le dicen 207 00:07:58,829 --> 00:08:01,069 dame una, y ya está, y todo el tema de 208 00:08:01,069 --> 00:08:03,449 sincronización, todo eso ya lo tiene gestionado 209 00:08:03,449 --> 00:08:05,470 Entonces eso sería lo natural 210 00:08:05,470 --> 00:08:07,430 En una aplicación multi 211 00:08:07,430 --> 00:08:08,509 ¿Vale? 212 00:08:08,970 --> 00:08:10,430 Hacer un pool de conexiones y ya está 213 00:08:10,430 --> 00:08:17,069 Está en la hora virtual 214 00:08:17,069 --> 00:08:17,889 De todas maneras 215 00:08:17,889 --> 00:08:21,029 La interfaz de venta dao 216 00:08:21,029 --> 00:08:22,110 Tiene esos 217 00:08:22,110 --> 00:08:25,089 Tiene estos cuatro métodos y ya está, vacíos 218 00:08:25,089 --> 00:08:26,430 O sea, tenía estos métodos 219 00:08:26,430 --> 00:08:28,769 Claro, tenía estos 220 00:08:28,769 --> 00:08:31,009 Vale, pues entonces 221 00:08:31,009 --> 00:08:35,190 Vamos a hacer las dos 222 00:08:35,190 --> 00:08:36,289 Posibilidades 223 00:08:36,289 --> 00:08:44,009 Entonces, ¿cómo podríamos diseñar esto? 224 00:08:44,809 --> 00:08:46,789 ¡Venga, copia! ¡Corre, corre, corre! 225 00:08:47,289 --> 00:08:48,230 ¡Se nos pasa la hora! 226 00:08:52,009 --> 00:08:55,490 Sí, lo tengo en el aula 227 00:08:55,490 --> 00:08:59,029 Vale, pues entonces 228 00:08:59,029 --> 00:09:02,529 Ahora estos métodos ya sí que necesitan 229 00:09:02,529 --> 00:09:06,169 O bien la conexión que yo voy a crear 230 00:09:06,169 --> 00:09:07,870 Una única 231 00:09:07,870 --> 00:09:11,970 ¿Vale? Porque, repito, la opción de crearla aquí dentro 232 00:09:11,970 --> 00:09:13,330 hacer lo que sea y cerrarla 233 00:09:13,330 --> 00:09:15,750 sería una posibilidad, pero muy pesada 234 00:09:15,750 --> 00:09:18,289 que cada método la cree, haga lo que sea y la cierre 235 00:09:18,289 --> 00:09:20,210 creo, haga lo que sea y la cierro 236 00:09:20,210 --> 00:09:21,269 como eso es muy pesado 237 00:09:21,269 --> 00:09:24,429 pues hombre, mejor diseño 238 00:09:24,429 --> 00:09:26,730 me creo aquí una conexión 239 00:09:26,730 --> 00:09:28,350 que esta clase 240 00:09:28,350 --> 00:09:29,250 implementación 241 00:09:29,250 --> 00:09:31,769 pues tenga su objeto conexión 242 00:09:31,769 --> 00:09:38,480 ¿vale? que lo tenga 243 00:09:38,480 --> 00:09:41,220 este objeto conexión 244 00:09:41,220 --> 00:09:43,080 pues de donde viene 245 00:09:43,080 --> 00:09:44,559 de 246 00:09:44,559 --> 00:09:46,360 javasql 247 00:09:46,360 --> 00:09:49,019 Que es la API 248 00:09:49,019 --> 00:09:50,379 De JDBC 249 00:09:50,379 --> 00:09:53,159 ¿Cómo? 250 00:09:53,379 --> 00:09:54,019 Hay más 251 00:09:54,019 --> 00:09:56,679 Hay más importes 252 00:09:56,679 --> 00:09:58,720 Supongo, pero el que nos importa es 253 00:09:58,720 --> 00:10:01,000 Java SQL, con este nos quedamos 254 00:10:01,000 --> 00:10:03,139 Que es la API JDBC 255 00:10:03,139 --> 00:10:05,159 Mayoritariamente está metida ahí dentro 256 00:10:05,159 --> 00:10:05,419 ¿Vale? 257 00:10:06,399 --> 00:10:09,139 Pues entonces esta conexión es ya la que van a usar 258 00:10:09,139 --> 00:10:10,080 Estos métodos 259 00:10:10,080 --> 00:10:13,600 Entonces esta conexión 260 00:10:13,600 --> 00:10:15,580 Pues se la 261 00:10:15,580 --> 00:10:18,299 Podemos pasar, se la podríamos pasar 262 00:10:18,299 --> 00:10:19,159 Por parámetro 263 00:10:19,159 --> 00:10:21,679 Aventada o implementación 264 00:10:21,679 --> 00:10:22,960 Esto ya son 265 00:10:22,960 --> 00:10:25,039 Elecciones de diseño 266 00:10:25,039 --> 00:10:26,299 En el constructor 267 00:10:26,299 --> 00:10:29,039 Por ejemplo 268 00:10:29,039 --> 00:10:40,559 Public 269 00:10:40,559 --> 00:10:48,419 Y aquí pues ya está 270 00:10:48,419 --> 00:10:49,940 Conexión 271 00:10:49,940 --> 00:10:52,740 Por ejemplo sería una posibilidad 272 00:10:52,740 --> 00:10:53,639 ¿Vale? 273 00:10:54,179 --> 00:10:55,899 Cuando instanciamos este objeto 274 00:10:55,899 --> 00:10:59,080 Le vamos a pasar la conexión que vamos a usar 275 00:10:59,080 --> 00:11:01,120 y ahora aquí ya con esa conexión 276 00:11:01,120 --> 00:11:03,460 cada método tira, hace las sentencias 277 00:11:03,460 --> 00:11:05,820 lo que sea, porque es una única, porque no es 278 00:11:05,820 --> 00:11:07,240 multi hilo, vale 279 00:11:07,240 --> 00:11:09,600 entonces, ¿cómo creamos 280 00:11:09,600 --> 00:11:11,600 esta conexión? pues en este diseño 281 00:11:11,600 --> 00:11:13,759 que he hecho yo aquí, en este diseño 282 00:11:13,759 --> 00:11:15,019 al pasársela por parámetro 283 00:11:15,019 --> 00:11:17,639 la crearíamos en el punto en el que 284 00:11:17,639 --> 00:11:18,820 la llamamos 285 00:11:18,820 --> 00:11:21,620 ¿y en qué punto? bueno pues 286 00:11:21,620 --> 00:11:22,840 ahora es cuando ya nos viene a la cabeza 287 00:11:22,840 --> 00:11:25,659 vamos a ejecutar estas cosas en algún sitio 288 00:11:25,659 --> 00:11:27,519 claro, ¿dónde las ejecuta? me viene a la cabeza un main 289 00:11:27,519 --> 00:11:28,899 Lógicamente de un main 290 00:11:28,899 --> 00:11:30,980 Que es donde yo llamaré a venta de implementación 291 00:11:30,980 --> 00:11:32,919 Pero bueno, si intentamos de nuevo 292 00:11:32,919 --> 00:11:35,179 Organizar la aplicación como un poquito más 293 00:11:35,179 --> 00:11:36,980 De elegancia 294 00:11:36,980 --> 00:11:39,019 Pues cuando nos viene 295 00:11:39,019 --> 00:11:41,500 La clase que ya hace las cosas 296 00:11:41,500 --> 00:11:42,820 O sea que me ofrece 297 00:11:42,820 --> 00:11:45,460 Los comportamientos que yo necesito 298 00:11:45,460 --> 00:11:46,659 Pues nos viene la palabra 299 00:11:46,659 --> 00:11:47,980 Servicio 300 00:11:47,980 --> 00:11:51,600 Las clases de servicio 301 00:11:51,600 --> 00:11:53,720 Son las clases que tienen 302 00:11:53,720 --> 00:11:56,940 Los requisitos funcionales 303 00:11:56,940 --> 00:11:59,299 la aplicación, lo que la aplicación va a hacer 304 00:11:59,299 --> 00:12:01,100 dicho así resumido 305 00:12:01,100 --> 00:12:03,259 y las clases 306 00:12:03,259 --> 00:12:05,120 de servicio, parte de lo que tienen 307 00:12:05,120 --> 00:12:06,600 que hacer, van a necesitar 308 00:12:06,600 --> 00:12:09,399 hacer acceso a datos, por las clases de servicio 309 00:12:09,399 --> 00:12:11,120 tendrán que implementar 310 00:12:11,120 --> 00:12:13,120 este objeto 311 00:12:13,120 --> 00:12:14,399 para llamar a los métodos 312 00:12:14,399 --> 00:12:17,100 bueno, pues en lugar por tanto de hacer 313 00:12:17,100 --> 00:12:18,960 esto desde un main, pues vamos a hacerlo desde 314 00:12:18,960 --> 00:12:20,360 una clase servicio 315 00:12:20,360 --> 00:12:24,779 yo que sé, la metemos 316 00:12:24,779 --> 00:12:26,080 en cualquier paquetillo 317 00:12:26,080 --> 00:12:41,480 pues por ejemplo 318 00:12:41,480 --> 00:12:44,220 ventas 319 00:12:44,220 --> 00:12:48,809 service, aquí van 320 00:12:48,809 --> 00:12:50,889 a estar las funcionalidades 321 00:12:50,889 --> 00:12:52,649 que realmente le interesan 322 00:12:52,649 --> 00:12:54,330 a la aplicación, y ahora ya estas 323 00:12:54,330 --> 00:12:56,330 funcionalidades las llamará quien sea 324 00:12:56,330 --> 00:12:57,929 las puede llamar una 325 00:12:57,929 --> 00:13:00,009 aplicación de sprint 326 00:13:00,009 --> 00:13:02,809 una aplicación web, las puede llamar 327 00:13:02,809 --> 00:13:04,610 un setlet, las puede llamar un main 328 00:13:04,610 --> 00:13:06,490 las puede llamar una interfaz gráfica, quien sea 329 00:13:06,490 --> 00:13:08,769 puede llamar ahora ya este servicio, que es un servicio 330 00:13:08,769 --> 00:13:09,289 sin más 331 00:13:09,289 --> 00:13:11,909 pues por ejemplo 332 00:13:11,909 --> 00:13:13,929 ¿Qué queremos hacer aquí? 333 00:13:14,149 --> 00:13:16,049 Vamos a hacer algo que tengamos ya implementado aquí 334 00:13:16,049 --> 00:13:19,049 Porque si no, pues vamos a crear una venta 335 00:13:19,049 --> 00:13:21,409 Al servicio le interesa 336 00:13:21,409 --> 00:13:23,610 El tío que me ha pedido la aplicación 337 00:13:23,610 --> 00:13:24,190 Me dice, oye 338 00:13:24,190 --> 00:13:27,169 Necesito crear una venta 339 00:13:27,169 --> 00:13:27,789 Pues venga 340 00:13:27,789 --> 00:13:41,799 Necesita la conexión 341 00:13:41,799 --> 00:13:42,779 El tema es 342 00:13:42,779 --> 00:13:44,360 Cómo acceder a ella 343 00:13:44,360 --> 00:13:45,879 Vale, pues 344 00:13:45,879 --> 00:13:47,500 La puedo poner 345 00:13:47,500 --> 00:13:48,639 No necesita la 346 00:13:48,639 --> 00:13:52,720 lo que necesita este para operar 347 00:13:52,720 --> 00:13:54,559 es la implementación del DAO 348 00:13:54,559 --> 00:13:56,220 claro 349 00:13:56,220 --> 00:13:57,039 entonces 350 00:13:57,039 --> 00:13:59,519 aquí podríamos poner 351 00:13:59,519 --> 00:14:04,059 el servicio va a necesitar 352 00:14:04,059 --> 00:14:05,600 como es el servicio de venta 353 00:14:05,600 --> 00:14:07,799 va a necesitar el venta DAO 354 00:14:07,799 --> 00:14:10,120 implementación 355 00:14:10,120 --> 00:14:11,179 lo va a necesitar 356 00:14:11,179 --> 00:14:26,029 y este pues le podemos poner 357 00:14:26,029 --> 00:14:27,490 su constructor 358 00:14:27,490 --> 00:14:51,549 vale entonces 359 00:14:51,549 --> 00:14:55,269 ahora el problema de crear 360 00:14:55,269 --> 00:14:57,590 la venta da implementación, está delegado 361 00:14:57,590 --> 00:14:59,149 al que llame el servicio, ¿vale? 362 00:14:59,149 --> 00:15:00,710 En nuestro caso ya sí que va a ser un main 363 00:15:00,710 --> 00:15:02,309 ¿Vale? 364 00:15:03,289 --> 00:15:05,769 Esto, porque yo he hecho este diseño, podríamos 365 00:15:05,769 --> 00:15:07,509 en este mismo servicio 366 00:15:07,509 --> 00:15:09,649 darle valor a esta venta da implementación 367 00:15:09,649 --> 00:15:11,789 y meter aquí la conexión, son posibilidades 368 00:15:11,789 --> 00:15:12,169 ¿Vale? 369 00:15:13,470 --> 00:15:15,389 Ya, claro, pero es que realmente 370 00:15:15,389 --> 00:15:17,549 suele ser así, ¿vale? 371 00:15:17,789 --> 00:15:19,529 Por eso, para hacer un 372 00:15:19,529 --> 00:15:21,809 getConnection de mierda, para hacer eso 373 00:15:21,809 --> 00:15:23,710 estoy haciendo mil clases y mil 374 00:15:23,710 --> 00:15:25,649 capas, pero es que suele ser así la estructura 375 00:15:25,649 --> 00:15:27,690 de las aplicaciones, entonces pues para que 376 00:15:27,690 --> 00:15:29,389 no, para que os sea familiar 377 00:15:29,389 --> 00:15:31,929 tanto los términos como la estructura 378 00:15:31,929 --> 00:15:33,690 tú en una aplicación normal es que 379 00:15:33,690 --> 00:15:35,830 vas a ver estos paquetes, vas a ver el modelo 380 00:15:35,830 --> 00:15:37,909 vas a ver los servicios, vas a ver los daos 381 00:15:37,909 --> 00:15:39,350 estos paquetes los vas a ver 382 00:15:39,350 --> 00:15:41,470 y cuanto antes especifiques 383 00:15:41,470 --> 00:15:43,750 cuanto antes identifiques cada cosa que será 384 00:15:43,750 --> 00:15:45,710 pues mejor, porque entonces si quieres ver 385 00:15:45,710 --> 00:15:46,450 algo te vas ahí 386 00:15:46,450 --> 00:15:49,769 claro, o sea una aplicación 387 00:15:49,769 --> 00:15:50,889 que hace una chorrada 388 00:15:50,889 --> 00:15:53,409 tiene un montón de paquetes, cada uno 389 00:15:53,409 --> 00:15:54,450 para una capa distinta 390 00:15:54,450 --> 00:15:57,230 pero claro, luego esa aplicación 391 00:15:57,230 --> 00:15:58,269 si va engordando 392 00:15:58,269 --> 00:16:00,950 pues van engordando cada cosita por separado 393 00:16:00,950 --> 00:16:02,950 y cada una ocupándose de lo suyo 394 00:16:02,950 --> 00:16:05,049 entonces luego es más fácil 395 00:16:05,049 --> 00:16:06,889 entonces no engordas tampoco por separado 396 00:16:06,889 --> 00:16:08,830 engordas el dado y tienes que engordar el dado 397 00:16:08,830 --> 00:16:11,309 bueno ya, pero luego cambias 398 00:16:11,309 --> 00:16:13,429 el modelo, sí, pero me refiero 399 00:16:13,429 --> 00:16:15,350 que conceptualmente 400 00:16:15,350 --> 00:16:17,549 se va engordando por separado 401 00:16:17,549 --> 00:16:19,210 sí, claro, cada uno va a tirar del otro 402 00:16:19,210 --> 00:16:21,149 si engorda el modelo y tú quieres 403 00:16:21,149 --> 00:16:22,710 que todo sea en precisión, pues tendrás que 404 00:16:22,710 --> 00:16:26,070 pero claro, que siempre se va a mantener esa separación 405 00:16:26,070 --> 00:16:31,950 qué rebelde sois 406 00:16:31,950 --> 00:16:35,809 ya, y también te gustan más los 407 00:16:35,809 --> 00:16:37,450 que los streams 408 00:16:37,450 --> 00:16:40,090 en fin 409 00:16:40,090 --> 00:16:43,889 qué le vamos a hacer, así es como 410 00:16:43,889 --> 00:16:45,509 yo sí que veo 411 00:16:45,509 --> 00:16:49,289 yo sí que veo cierto sentido 412 00:16:49,289 --> 00:16:51,990 hacer las cosas con esta estructura 413 00:16:51,990 --> 00:16:54,669 orientada de cara a la reutilización 414 00:16:54,669 --> 00:16:56,429 si tú tienes el servicio 415 00:16:56,429 --> 00:16:58,409 aparte, pues bueno, te va a ser 416 00:16:58,409 --> 00:16:59,470 más fácil ahí 417 00:16:59,470 --> 00:17:02,149 conectar con la vista 418 00:17:02,149 --> 00:17:03,309 entonces, ¿eh? 419 00:17:06,049 --> 00:17:08,930 esto es un servicio, como que no hemos visto servicios 420 00:17:08,930 --> 00:17:11,029 esto es un servicio, ¿ya has visto servicios? 421 00:17:11,769 --> 00:17:12,630 ah, vale 422 00:17:12,630 --> 00:17:14,650 claro, es que 423 00:17:14,650 --> 00:17:16,950 no, no, no, pero me refiero 424 00:17:16,950 --> 00:17:18,470 que las cosas 425 00:17:18,470 --> 00:17:20,390 en realidad, en desarrollo son 426 00:17:20,390 --> 00:17:21,130 nombres 427 00:17:21,130 --> 00:17:24,329 Este año, en realidad, sobre todo 428 00:17:24,329 --> 00:17:26,130 Entre otras cosas, estamos aprendiendo 429 00:17:26,130 --> 00:17:28,630 Nombres, pero de conceptos que ya sabemos 430 00:17:28,630 --> 00:17:29,670 ¿Vale? 431 00:17:30,930 --> 00:17:32,230 Venga, pues entonces 432 00:17:32,230 --> 00:17:35,910 ¿Dónde estamos? 433 00:17:36,109 --> 00:17:37,809 Porque con tanta clase ya no sé dónde estamos 434 00:17:37,809 --> 00:17:40,430 Sí, sí, yo no lo defiendo, pero yo tengo que hacer 435 00:17:40,430 --> 00:17:41,529 Mi papel, esto es como 436 00:17:41,529 --> 00:17:44,029 Como el presidente del gobierno, porque tiene que vender 437 00:17:44,029 --> 00:17:45,289 Que él va a hacer algo bueno 438 00:17:45,289 --> 00:17:48,170 Y tú eliges si te lo crees o no 439 00:17:48,170 --> 00:17:49,710 Pues aquí, guay, yo te vendo esto 440 00:17:49,710 --> 00:17:53,029 Porque es mi trabajo 441 00:17:53,029 --> 00:17:57,250 Vale, ahora en crear venta 442 00:17:57,250 --> 00:17:58,109 Pues esto sería 443 00:17:58,109 --> 00:18:00,690 Dao.insert 444 00:18:00,690 --> 00:18:01,250 ¿Verdad? 445 00:18:02,589 --> 00:18:04,450 Insert, venta 446 00:18:04,450 --> 00:18:05,750 Perdón 447 00:18:05,750 --> 00:18:06,549 Es que 448 00:18:06,549 --> 00:18:10,390 Qué feo estoy haciendo esto 449 00:18:10,390 --> 00:18:17,460 Claro, es que tal y como lo había hecho 450 00:18:17,460 --> 00:18:18,180 Qué feo 451 00:18:18,180 --> 00:18:20,500 Vale, fijaos 452 00:18:20,500 --> 00:18:23,160 Que bonito, ahora está mucho más bonito 453 00:18:23,160 --> 00:18:25,240 ¿Vale? Ahora ya es que 454 00:18:25,240 --> 00:18:26,539 Este servicio 455 00:18:26,539 --> 00:18:29,000 Ni hace referencia a la implementación 456 00:18:29,000 --> 00:18:31,079 Ni la hace, ni se entera, ni nada 457 00:18:31,079 --> 00:18:32,140 ¿Vale? 458 00:18:32,519 --> 00:18:33,720 Que antes estaba muy feo 459 00:18:33,720 --> 00:18:37,240 Bueno, pues 460 00:18:37,240 --> 00:18:38,500 Esta sería la estructura 461 00:18:38,500 --> 00:18:41,759 Pero ahora ya alguien tendrá que llamar al servicio 462 00:18:41,759 --> 00:18:43,440 Alguien tendrá que crear 463 00:18:43,440 --> 00:18:44,839 Ese servicio para llamarlo 464 00:18:44,839 --> 00:18:46,759 Y tal y como lo hemos hecho nosotros 465 00:18:46,759 --> 00:18:48,240 En el momento de crearlo 466 00:18:48,240 --> 00:18:50,059 Es cuando hay que darle ese DAO 467 00:18:50,059 --> 00:18:52,960 Y en el momento de crear ese DAB es cuando hay que hacer la conexión 468 00:18:52,960 --> 00:18:54,579 Tal y como lo hemos hecho nosotros 469 00:18:54,579 --> 00:18:56,759 ¿Vale? Que yo que sé, a lo mejor le pides 470 00:18:56,759 --> 00:18:58,660 Una aplicación así a HGPT 471 00:18:58,660 --> 00:19:01,119 Te va a traer más estructura, casi seguro 472 00:19:01,119 --> 00:19:03,079 Pero igual te crea la conexión 473 00:19:03,079 --> 00:19:04,759 Aquí mismo, pues yo que sé, depende también 474 00:19:04,759 --> 00:19:06,180 Un poco del contexto en el que trabajes 475 00:19:06,180 --> 00:19:08,079 Ahora, vale 476 00:19:08,079 --> 00:19:10,839 Vámonos ahora ya a nuestra 477 00:19:10,839 --> 00:19:14,339 ¿Qué le pasa a esto? Vale 478 00:19:14,339 --> 00:19:16,759 Vámonos a nuestra aplicación 479 00:19:16,759 --> 00:19:17,339 Sin más 480 00:19:17,339 --> 00:19:21,940 Perdón, que hace un poco de daño 481 00:19:21,940 --> 00:19:23,039 Sí, es amarillo ahí 482 00:19:23,039 --> 00:19:25,500 Duele, vale 483 00:19:25,500 --> 00:19:27,980 Pues venga, nos hacemos 484 00:19:27,980 --> 00:19:29,920 Un paquetillo con la app en sí 485 00:19:29,920 --> 00:19:37,640 Y en este caso nuestra app 486 00:19:37,640 --> 00:19:38,779 Es un main 487 00:19:38,779 --> 00:19:41,319 Pero podría ser pues la llamada 488 00:19:41,319 --> 00:19:43,279 Spring Boot para que genere 489 00:19:43,279 --> 00:19:45,079 Todos los bins, podría ser otras cosas 490 00:19:45,079 --> 00:19:46,460 Ahora mismo olvidaros de eso 491 00:19:46,460 --> 00:19:49,380 De nada, ahora mismo es un main 492 00:19:49,380 --> 00:19:50,079 Ya está 493 00:19:50,079 --> 00:19:52,880 Entonces, en el que por fin 494 00:19:52,880 --> 00:19:54,700 Ya vamos a crear la conexión 495 00:19:54,700 --> 00:19:56,440 La famosa línea para la cual hemos dado 496 00:19:56,440 --> 00:19:57,559 Cientas mil vueltas 497 00:19:57,559 --> 00:19:59,900 Pero 498 00:19:59,900 --> 00:20:01,400 En el fondo os ha gustado 499 00:20:01,400 --> 00:20:03,279 Lo que pasa es que os hacéis los duros 500 00:20:03,279 --> 00:20:03,680 Pero 501 00:20:03,680 --> 00:20:17,769 Reconoced que un poco 502 00:20:17,769 --> 00:20:19,349 Os gusta abrir la mente 503 00:20:19,349 --> 00:20:20,549 Y mover el cerebro 504 00:20:20,549 --> 00:20:22,250 Y plantearos cosas 505 00:20:22,250 --> 00:20:24,109 Porque es lo poquito 506 00:20:24,109 --> 00:20:27,490 Si algo podemos daros nosotros 507 00:20:27,490 --> 00:20:29,710 Es un contexto 508 00:20:29,710 --> 00:20:31,329 En el cual os sentáis incómodos 509 00:20:31,329 --> 00:20:33,009 Y tengáis que mover un poco el cerebro 510 00:20:33,009 --> 00:20:34,869 Porque los contenidos 511 00:20:34,869 --> 00:20:36,170 Van y vienen 512 00:20:36,170 --> 00:20:37,829 Completamente, hay una base 513 00:20:37,829 --> 00:20:41,569 Yo en seis años estudié unos contenidos 514 00:20:41,569 --> 00:20:43,329 Que jamás nunca he aplicado 515 00:20:43,329 --> 00:20:45,069 Pero no son seis años tirados a la basura 516 00:20:45,069 --> 00:20:47,069 Mis años de carrera, para nada 517 00:20:47,069 --> 00:20:50,869 No, y me lo creo 518 00:20:50,869 --> 00:20:52,609 Me lo creo realmente 519 00:20:52,609 --> 00:20:53,829 nos fueron tirados a la basura 520 00:20:53,829 --> 00:20:55,089 aunque no he aplicado 521 00:20:55,089 --> 00:20:55,630 jamás 522 00:20:55,630 --> 00:20:56,390 ninguno de los fondos 523 00:20:56,390 --> 00:20:57,410 tú te crees que yo 524 00:20:57,410 --> 00:20:58,750 10 horas a la semana 525 00:20:58,750 --> 00:20:59,950 de comunicaciones ópticas 526 00:20:59,950 --> 00:21:01,470 ¿alguna vez he usado 527 00:21:01,470 --> 00:21:02,230 comunicaciones ópticas? 528 00:21:02,329 --> 00:21:02,829 en la vida 529 00:21:02,829 --> 00:21:03,549 no, por ejemplo 530 00:21:03,549 --> 00:21:04,309 pero 531 00:21:04,309 --> 00:21:05,509 todo eso 532 00:21:05,509 --> 00:21:06,430 pues de alguna manera 533 00:21:06,430 --> 00:21:07,089 me... 534 00:21:07,089 --> 00:21:10,150 pues la asignatura 535 00:21:10,150 --> 00:21:10,690 de comunicaciones 536 00:21:10,690 --> 00:21:11,849 por decirte la primera asignatura 537 00:21:11,849 --> 00:21:12,569 se me ha venido a la cabeza 538 00:21:12,569 --> 00:21:13,390 que no he aplicado 539 00:21:13,390 --> 00:21:14,130 jamás en la vida 540 00:21:14,130 --> 00:21:17,170 bueno pues 541 00:21:17,170 --> 00:21:18,569 toda la física 542 00:21:18,569 --> 00:21:19,809 de la fibra óptica 543 00:21:19,809 --> 00:21:20,990 de principio a fin 544 00:21:20,990 --> 00:21:22,390 toda la matemática 545 00:21:22,390 --> 00:21:24,730 de los modos, de los multimodos, todo de principio 546 00:21:24,730 --> 00:21:26,849 a fin, todos los detalles 547 00:21:26,849 --> 00:21:28,690 más mínimos, ¿tú crees que yo eso alguna vez 548 00:21:28,690 --> 00:21:29,509 lo he usado? jamás 549 00:21:29,509 --> 00:21:32,730 bueno, sí, claro 550 00:21:32,730 --> 00:21:34,549 todo eso se supone que también la bioseguridad 551 00:21:34,549 --> 00:21:35,630 física, entonces 552 00:21:35,630 --> 00:21:37,970 pues aquí lo mismo 553 00:21:37,970 --> 00:21:40,569 aunque os sintáis 554 00:21:40,569 --> 00:21:42,509 incómodos y luego los 555 00:21:42,509 --> 00:21:44,750 contenidos en concreto, a lo mejor no los apliquéis 556 00:21:44,750 --> 00:21:45,930 es realmente 557 00:21:45,930 --> 00:21:48,710 la mayor enseñanza que podéis sacar de un ciclo 558 00:21:48,710 --> 00:21:50,910 el haber desarrollado 559 00:21:50,910 --> 00:21:51,950 de alguna manera esa 560 00:21:51,950 --> 00:21:54,410 capacidad de pensar en situaciones incómodas 561 00:21:54,410 --> 00:21:56,049 en entender 562 00:21:56,049 --> 00:21:57,089 en unir 563 00:21:57,089 --> 00:21:59,490 además se te quedan unos conocimientos 564 00:21:59,490 --> 00:22:02,369 básicos que seguramente al final acabes usando 565 00:22:02,369 --> 00:22:05,089 pero sobre todo 566 00:22:05,089 --> 00:22:08,150 la capacidad lógica, la memoria 567 00:22:08,150 --> 00:22:09,950 y vencer la pereza 568 00:22:09,950 --> 00:22:11,809 son las tres cosas que hay que aprender 569 00:22:11,809 --> 00:22:12,569 estos dos años 570 00:22:12,569 --> 00:22:16,250 desarrollar capacidad de pensamiento lógico 571 00:22:16,250 --> 00:22:18,190 aplicado a esto que estamos viendo 572 00:22:18,190 --> 00:22:19,869 aunque en el futuro igual lo apliquéis a otra cosa 573 00:22:19,869 --> 00:22:22,150 tú en las prácticas seguramente hiciste algo 574 00:22:22,150 --> 00:22:23,690 por lo que me contaste 575 00:22:23,690 --> 00:22:25,690 no tiene nada que ver con nada lo que habías estudiado aquí 576 00:22:25,690 --> 00:22:26,410 ¿no? 577 00:22:27,430 --> 00:22:28,750 se tenía que ver, vaya por Dios 578 00:22:28,750 --> 00:22:33,089 ah, vale, creía que 579 00:22:33,089 --> 00:22:35,750 vale, vale, no sé por qué me sonaba 580 00:22:35,750 --> 00:22:37,470 pero bueno 581 00:22:37,470 --> 00:22:39,710 hay gente que de repente tiene que rehacer una aplicación 582 00:22:39,710 --> 00:22:41,750 completa que está en C++ o mil cosas 583 00:22:41,750 --> 00:22:43,789 pero bueno, ya has desarrollado un pensamiento lógico 584 00:22:43,789 --> 00:22:45,930 y pum, lo aplicas, entonces eso es lo más importante 585 00:22:45,930 --> 00:22:47,450 entrenarlo con esto 586 00:22:47,450 --> 00:22:49,369 entrenarlo con esto, la memoria 587 00:22:49,369 --> 00:22:50,430 Entrenar la memoria 588 00:22:50,430 --> 00:22:53,930 Y vencer la pereza 589 00:22:53,930 --> 00:22:55,710 Que te va a ti muy bien 590 00:22:55,710 --> 00:22:57,509 Lo de tengo que hacer una aplicación 591 00:22:57,509 --> 00:22:59,410 Sé hacerla, me suena 592 00:22:59,410 --> 00:23:01,769 Y además incluso puede 593 00:23:01,769 --> 00:23:03,690 Que es que ni siquiera vaya a utilizar esto en la vida 594 00:23:03,690 --> 00:23:05,509 Pero aún así vence la pereza y la haces 595 00:23:05,509 --> 00:23:06,769 Porque eso es lo que te va 596 00:23:06,769 --> 00:23:09,849 A preparar para el futuro 597 00:23:09,849 --> 00:23:13,720 Bueno, después de este rollo 598 00:23:13,720 --> 00:23:14,599 Que se ha quedado grabado 599 00:23:14,599 --> 00:23:16,420 Una charla motivacional 600 00:23:16,420 --> 00:23:19,000 Que se ha quedado grabado 601 00:23:19,000 --> 00:23:21,859 ahora ya vamos a hacer la 602 00:23:21,859 --> 00:23:24,200 vamos a insertar una venta 603 00:23:24,200 --> 00:23:25,759 vamos a insertar una venta 604 00:23:25,759 --> 00:23:27,839 pues para insertar una venta necesito 605 00:23:27,839 --> 00:23:30,180 el objeto ventaservice, es que no hay tutía 606 00:23:30,180 --> 00:23:45,460 que le tengo que pasar 607 00:23:45,460 --> 00:23:47,720 lógicamente la conexión, le voy a poner ahora esto 608 00:23:47,720 --> 00:23:49,539 perdón 609 00:23:49,539 --> 00:23:51,420 perdón 610 00:23:51,420 --> 00:23:53,359 a ver, le he puesto 611 00:23:53,359 --> 00:23:55,359 ahora mismo null solamente para quitar el error 612 00:23:55,359 --> 00:23:57,740 de compilación, ahora lógicamente 613 00:23:57,740 --> 00:23:58,579 le damos la conexión 614 00:23:58,579 --> 00:24:01,440 y ahora ya esta aplicación 615 00:24:01,440 --> 00:24:03,200 Pues que yo quiero insertar una venta 616 00:24:03,200 --> 00:24:05,900 Pues aquí, pues lo que sea 617 00:24:05,900 --> 00:24:07,440 Dame datos 618 00:24:07,440 --> 00:24:10,990 Dame datos 619 00:24:10,990 --> 00:24:13,650 Se creará la venta 620 00:24:13,650 --> 00:24:19,059 Y ahora ya 621 00:24:19,059 --> 00:24:22,680 Service.createventa 622 00:24:22,680 --> 00:24:31,940 Esta será nuestra aplicación 623 00:24:31,940 --> 00:24:33,880 Y aquí ni vemos DAO 624 00:24:33,880 --> 00:24:34,700 Ni vemos nada 625 00:24:34,700 --> 00:24:37,140 Vemos el servicio, ya está 626 00:24:37,140 --> 00:24:38,700 Pero ya está, no vemos DAO 627 00:24:38,700 --> 00:24:40,779 Y DAO no ve DAO implementación 628 00:24:40,779 --> 00:24:42,619 Me refiero al código ahí dentro 629 00:24:42,619 --> 00:25:01,099 Entonces, pues bueno, de alguna manera sí que estamos desacoplando y facilitando la posible recompilación, aunque no te lo creas, pero tampoco te creas que yo me lo creo mucho, pero esto es como los, yo qué sé, como el cura, te suelta su película y tú crees que creen Dios, pues no, pues ya está, pues esto es igual. 630 00:25:01,099 --> 00:25:07,059 Ahora ya sé que vamos a pasarle la conexión 631 00:25:07,059 --> 00:25:09,440 Vale 632 00:25:09,440 --> 00:25:12,740 Perdón, tenemos que pasarle el objeto 633 00:25:12,740 --> 00:25:14,500 Implementación 634 00:25:14,500 --> 00:25:18,500 Ventadao 635 00:25:18,500 --> 00:25:29,680 Y a este ventadao 636 00:25:29,680 --> 00:25:31,579 Implementación es al que 637 00:25:31,579 --> 00:25:33,339 Tendremos que pasarle 638 00:25:33,339 --> 00:25:35,299 Ahora ya sí 639 00:25:35,299 --> 00:25:46,380 La conexión, vale 640 00:25:46,380 --> 00:25:48,200 Entonces 641 00:25:48,200 --> 00:25:51,140 Espera, estoy poniendo todo nul para quitar los errores 642 00:25:51,140 --> 00:25:53,180 De compilación y ver la estructura 643 00:25:53,180 --> 00:25:55,019 Ahora ya lo rellenamos 644 00:25:55,019 --> 00:26:00,250 ¿Dónde? 645 00:26:00,690 --> 00:26:02,069 Uy, uy, uy 646 00:26:02,069 --> 00:26:04,589 Venta 647 00:26:04,589 --> 00:26:06,089 A ver 648 00:26:06,089 --> 00:26:07,430 ¿Qué he hecho mal? 649 00:26:07,430 --> 00:26:08,509 Ahí, justo 650 00:26:08,509 --> 00:26:10,529 Cándele el nombre por trabajo 651 00:26:10,529 --> 00:26:14,819 Ah, vale 652 00:26:14,819 --> 00:26:15,660 Vale, vale 653 00:26:15,660 --> 00:26:18,079 Vale, vale 654 00:26:18,079 --> 00:26:23,369 Es que es mucho más bonito que se llame así 655 00:26:23,369 --> 00:26:24,990 Vale 656 00:26:24,990 --> 00:26:34,079 Entrada de implementación 657 00:26:34,079 --> 00:26:37,559 Aquí lo que pasa es que ya 658 00:26:37,559 --> 00:26:39,539 Con la cosa rara que he hecho se me ha debido crear 659 00:26:39,539 --> 00:26:40,839 Algo que no quería, este 660 00:26:40,839 --> 00:26:42,799 Ah, se me ha quedado este que no le quiero 661 00:26:42,799 --> 00:26:47,109 Sí, es que se me ha creado el uno 662 00:26:47,109 --> 00:26:48,289 Que se adaptaba a ese 663 00:26:48,289 --> 00:26:50,029 En fin, que ha hecho una tontería 664 00:26:50,029 --> 00:26:52,230 Vale, ahora ya sí 665 00:26:52,230 --> 00:26:55,059 Puedo 666 00:26:55,059 --> 00:26:59,130 Vale, al final 667 00:26:59,130 --> 00:27:01,049 No me he resistido 668 00:27:01,049 --> 00:27:03,470 Y he cogido tu truco del 669 00:27:03,470 --> 00:27:05,730 que es que ese truco se me ha dado siempre 670 00:27:05,730 --> 00:27:07,730 muy mal rollo, lo de que él haga los import 671 00:27:07,730 --> 00:27:09,650 y... pero bueno 672 00:27:09,650 --> 00:27:11,049 confío en él 673 00:27:11,049 --> 00:27:16,089 claro, por eso siempre me da un poco de angustia 674 00:27:16,089 --> 00:27:17,630 pero bueno, como aquí lo tenemos arriba 675 00:27:17,630 --> 00:27:19,450 rápidamente y si algo 676 00:27:19,450 --> 00:27:21,589 vale, pues esta sería la estructura 677 00:27:21,589 --> 00:27:22,910 entonces, aquí 678 00:27:22,910 --> 00:27:25,970 aquí, sí que es cierto 679 00:27:25,970 --> 00:27:26,970 perdón, aquí arriba 680 00:27:26,970 --> 00:27:28,650 que ya 681 00:27:28,650 --> 00:27:31,369 hemos perdido un poco el desacoplamiento 682 00:27:31,369 --> 00:27:33,609 porque aquí estamos mirando directamente 683 00:27:33,609 --> 00:27:35,430 el barro, estamos mirando 684 00:27:35,430 --> 00:27:37,269 lo sucio, que es 685 00:27:37,269 --> 00:27:39,289 la conexión y el 686 00:27:39,289 --> 00:27:41,289 ventadao, estamos mirando aquí un poco ya lo 687 00:27:41,289 --> 00:27:42,890 guarrete, lo del barro 688 00:27:42,890 --> 00:27:45,390 lo ideal sería que yo hiciera el servicio y ya está 689 00:27:45,390 --> 00:27:47,410 vale, lo que pasa es que 690 00:27:47,410 --> 00:27:49,569 bueno, que es que no hay tutía, estoy que meterlo en algún sitio 691 00:27:49,569 --> 00:27:53,309 lo ideal sería, o no 692 00:27:53,309 --> 00:27:55,509 de nuevo va en opiniones y gustos 693 00:27:55,509 --> 00:27:57,210 que yo tuviera alguna capita 694 00:27:57,210 --> 00:27:59,309 por encima, que me limpiara 695 00:27:59,309 --> 00:28:01,130 esto, y se dedicara 696 00:28:01,130 --> 00:28:03,089 a qué, a ir 697 00:28:03,089 --> 00:28:05,130 inyectando él los 698 00:28:05,130 --> 00:28:07,109 objetos según los va necesitando 699 00:28:07,109 --> 00:28:08,690 yo me hago mi venta service 700 00:28:08,690 --> 00:28:11,069 y venta service se da cuenta de que 701 00:28:11,069 --> 00:28:12,609 necesita una implementación 702 00:28:12,609 --> 00:28:15,029 alguien mágico que está por ahí 703 00:28:15,029 --> 00:28:17,289 va y lo genera, el de implementación 704 00:28:17,289 --> 00:28:19,029 se da cuenta, ahí está una conexión, alguien 705 00:28:19,029 --> 00:28:21,089 mágico que está por ahí va y se lo genera 706 00:28:21,089 --> 00:28:22,950 y se lo mete y no sé qué, ojalá hubiera 707 00:28:22,950 --> 00:28:24,869 alguien mágico por ahí que creara 708 00:28:24,869 --> 00:28:26,970 lo que hace falta, lo va metiendo y yo no 709 00:28:26,970 --> 00:28:27,910 tengo que hacer esta mierda 710 00:28:27,910 --> 00:28:30,630 pero si hay alguien mágico que lo haga, que es 711 00:28:30,630 --> 00:28:31,849 sprint, ¿vale? 712 00:28:32,470 --> 00:28:33,930 entonces con esa capita de sprint 713 00:28:33,930 --> 00:28:36,710 pues la parte de inyección de dependencias 714 00:28:36,710 --> 00:28:37,670 que significa 715 00:28:37,670 --> 00:28:40,549 si yo voy a crear un objeto y necesita algo 716 00:28:40,549 --> 00:28:42,670 crealo tú y mételo tú 717 00:28:42,670 --> 00:28:44,349 yo me voy a andar yo aquí creándolo 718 00:28:44,349 --> 00:28:45,750 para meterlo 719 00:28:45,750 --> 00:28:48,049 sprint, entre otras cosas 720 00:28:48,049 --> 00:28:50,490 originalmente se creó 721 00:28:50,490 --> 00:28:52,769 como un motor de inyección de dependencias 722 00:28:52,769 --> 00:28:54,769 que se llama, ¿qué es inyección de dependencias? 723 00:28:54,950 --> 00:28:56,410 se eligió una frase muy bonita para 724 00:28:56,410 --> 00:28:58,369 poder venderlo, porque si no lo compra nadie 725 00:28:58,369 --> 00:29:00,849 ¿Qué significa? ¿Quieres un objeto? 726 00:29:01,250 --> 00:29:01,990 Yo te lo creo 727 00:29:01,990 --> 00:29:04,849 Y ya está, y para eso se hacían unos 728 00:29:04,849 --> 00:29:06,730 XML de configuración donde 729 00:29:06,730 --> 00:29:08,750 El que hacía la aplicación, pues había 730 00:29:08,750 --> 00:29:10,509 Hecho algo con un caruto, porque 731 00:29:10,509 --> 00:29:12,809 Se ahorraba hacer esto, pero luego se tenía que 732 00:29:12,809 --> 00:29:14,829 Hacer un pedazo de XML en el que tenía 733 00:29:14,829 --> 00:29:16,750 Que identificar, voy a usar este bin, y voy a usar 734 00:29:16,750 --> 00:29:18,690 Este, y voy a usar este, cuando te haga 735 00:29:18,690 --> 00:29:20,730 Falta lo creas solo, y voy a usar este bin 736 00:29:20,730 --> 00:29:22,789 También, pero cuidado, este no va a ser 737 00:29:22,789 --> 00:29:24,910 Duplicado el otro, entonces tenías que hacer un pedazo 738 00:29:24,910 --> 00:29:26,289 De XML enorme 739 00:29:26,289 --> 00:29:30,109 Bueno, se configuraba con XML 740 00:29:30,109 --> 00:29:32,170 Bueno, y se sigue configurando 741 00:29:32,170 --> 00:29:35,549 Depende de la parte de Spring en la que estés 742 00:29:35,549 --> 00:29:37,970 Entonces, bueno, ahí tenías que configurar 743 00:29:37,970 --> 00:29:39,890 Oye, que vas a necesitar esto, créalo cuando haga falta 744 00:29:39,890 --> 00:29:42,049 Y ya Spring te hacía todos sus 745 00:29:42,049 --> 00:29:44,109 Todos sus constructores 746 00:29:44,109 --> 00:29:44,789 Para meterlo 747 00:29:44,789 --> 00:29:46,650 Esa es la inyección de dependencias 748 00:29:46,650 --> 00:29:49,170 Hacer news para crear objetos 749 00:29:49,170 --> 00:29:50,410 Y meterlo donde haga falta 750 00:29:50,410 --> 00:29:52,089 Es decir, lo que hemos hecho nosotros 751 00:29:52,089 --> 00:29:55,849 Aquí hemos inyectado una conexión a este 752 00:29:55,849 --> 00:29:58,450 Y aquí hemos inyectado 753 00:29:58,450 --> 00:29:59,970 Un DAO a este 754 00:29:59,970 --> 00:30:03,069 ¿Vale? Queda más bonito decirlo inyectado 755 00:30:03,069 --> 00:30:04,450 Pero lo que hemos hecho ha sido crearlo y meterlo 756 00:30:04,450 --> 00:30:06,549 ¿Por qué le pones aventada a la ventana de null en vez de con? 757 00:30:06,869 --> 00:30:08,990 Porque, sí, porque estaba poniendo 758 00:30:08,990 --> 00:30:11,269 Ahora los null sin más para quitar el error de conexión 759 00:30:11,269 --> 00:30:13,210 Para quitar el error de compilación 760 00:30:13,210 --> 00:30:14,289 No le regañes tampoco 761 00:30:14,289 --> 00:30:17,289 A ver, que he puesto null 762 00:30:17,289 --> 00:30:18,589 En todos los parámetros 763 00:30:18,589 --> 00:30:20,269 Para quitar el error de compilación 764 00:30:20,269 --> 00:30:20,890 Ahora ya 765 00:30:20,890 --> 00:30:24,869 Sí, sí, sí, aquí yo puedo poner con 766 00:30:24,869 --> 00:30:26,529 Y ahora ya aquí 767 00:30:26,529 --> 00:30:28,109 Pondré DAO 768 00:30:28,109 --> 00:30:30,670 Ya estos dos NULL los quito 769 00:30:30,670 --> 00:30:33,369 Y ahora ya por fin todo esto 770 00:30:33,369 --> 00:30:34,809 No tiene nada que ver con JDBC 771 00:30:34,809 --> 00:30:36,890 Ahora ya sí que nos vamos a JDBC 772 00:30:36,890 --> 00:30:37,930 Que es crear la conexión 773 00:30:37,930 --> 00:30:52,440 No creo que haya dos corrientes sobre eso 774 00:30:52,440 --> 00:30:55,740 No creo que haya dos corrientes 775 00:30:55,740 --> 00:30:56,319 No lo sé 776 00:30:56,319 --> 00:30:58,140 Yo sé pocas cosas 777 00:30:58,140 --> 00:30:59,539 Como el abuelo de Kirikou 778 00:30:59,539 --> 00:31:00,319 Pero 779 00:31:00,319 --> 00:31:07,160 Yo creo que sí, lo que pasa es que 780 00:31:07,160 --> 00:31:09,039 claro, depende del contexto, si es una 781 00:31:09,039 --> 00:31:11,440 aplicación donde el rendimiento es crítico 782 00:31:11,440 --> 00:31:13,359 pues en esa aplicación 783 00:31:13,359 --> 00:31:15,140 cuantas menos 784 00:31:15,140 --> 00:31:17,059 capas pongas mejor porque menos vas a perder 785 00:31:17,059 --> 00:31:18,579 el control, pero eso es una aplicación 786 00:31:18,579 --> 00:31:21,000 donde el rendimiento es crítico 787 00:31:21,000 --> 00:31:22,960 no lo vas a hacer con Java, porque Java 788 00:31:22,960 --> 00:31:24,559 ya sobre la máquina virtual te mete ahí 789 00:31:24,559 --> 00:31:26,940 entonces Java es para 790 00:31:26,940 --> 00:31:29,240 aplicaciones comerciales y esencialmente 791 00:31:29,240 --> 00:31:31,019 Ahí el rendimiento no es tan importante 792 00:31:31,019 --> 00:31:33,440 Es más importante que la aplicación sea escalable 793 00:31:33,440 --> 00:31:35,279 Mantenible 794 00:31:35,279 --> 00:31:35,900 Y para eso 795 00:31:35,900 --> 00:31:38,000 Dime, hoy vas a decir algo, ¿no? 796 00:31:38,579 --> 00:31:38,839 Sí 797 00:31:38,839 --> 00:31:42,559 ¿Qué es? 798 00:31:43,940 --> 00:31:44,339 Grand 799 00:31:44,339 --> 00:31:45,920 Ah, Graal 800 00:31:45,920 --> 00:31:47,599 Que te quita los tiempos de arranque 801 00:31:47,599 --> 00:31:48,539 Que te quita un montón de cosas 802 00:31:48,539 --> 00:31:51,660 Y además te va a poner nuevo Spring Boot con el 4.0 803 00:31:51,660 --> 00:31:53,440 Y a la 10 independencia 804 00:31:53,440 --> 00:31:55,420 Se puede hacer de una forma programáticamente 805 00:31:55,420 --> 00:31:57,319 Quitándote los componentes y las configuraciones 806 00:31:57,319 --> 00:32:00,960 ¿Lo habéis entendido? 807 00:32:01,180 --> 00:32:01,279 No 808 00:32:01,279 --> 00:32:06,579 Claro, pues 809 00:32:06,579 --> 00:32:09,240 Conclusión que podemos sacar de lo que ha dicho 810 00:32:09,240 --> 00:32:11,140 Que aunque pongas 811 00:32:11,140 --> 00:32:11,880 No, ¿eh? 812 00:32:12,660 --> 00:32:14,319 No, no, no, no 813 00:32:14,319 --> 00:32:15,519 Sí, ¿qué sabéis? 814 00:32:16,440 --> 00:32:18,740 A ver, justo 815 00:32:18,740 --> 00:32:20,500 Claro 816 00:32:20,500 --> 00:32:22,420 Efectivamente 817 00:32:22,420 --> 00:32:25,039 Que hay trabajo hecho en relación a 818 00:32:25,039 --> 00:32:26,500 Optimizar el tiempo 819 00:32:26,500 --> 00:32:28,539 pero no quitar las capas 820 00:32:28,539 --> 00:32:30,019 porque eso sí que, vale 821 00:32:30,019 --> 00:32:32,380 entonces todo eso que dice la anotación de no sé qué 822 00:32:32,380 --> 00:32:34,819 son anotaciones que se ponen para sustituir 823 00:32:34,819 --> 00:32:36,359 ese XML, he dicho yo 824 00:32:36,359 --> 00:32:37,880 entonces ahora ya si ni siquiera pones 825 00:32:37,880 --> 00:32:43,859 ¿Perdón? 826 00:32:50,400 --> 00:32:52,960 Claro, que la aplicación 827 00:32:52,960 --> 00:32:54,859 que ya tiene es una cebolla enorme 828 00:32:54,859 --> 00:32:55,980 pues que bueno 829 00:32:55,980 --> 00:32:57,940 Que sea una cebolla que funcione 830 00:32:57,940 --> 00:32:58,799 Que no te pierdas 831 00:32:58,799 --> 00:33:01,460 Pero bueno, son 832 00:33:01,460 --> 00:33:03,220 Conversaciones 833 00:33:03,220 --> 00:33:05,220 De alguna manera en las que yo tampoco 834 00:33:05,220 --> 00:33:06,779 Tengo 835 00:33:06,779 --> 00:33:11,599 Tengo mucha 836 00:33:11,599 --> 00:33:13,640 Información realmente, porque yo estoy aquí 837 00:33:13,640 --> 00:33:15,740 No estoy fuera, no estoy trabajando en Google 838 00:33:15,740 --> 00:33:16,880 Entonces, no sé 839 00:33:16,880 --> 00:33:19,119 Bueno 840 00:33:19,119 --> 00:33:21,220 Pues ahora ya sí 841 00:33:21,220 --> 00:33:24,039 Hemos completado toda la primera hora 842 00:33:24,039 --> 00:33:25,680 Para llegar a la conexión 843 00:33:25,680 --> 00:33:27,619 A esa unidad de conexión que vamos a hacer 844 00:33:27,619 --> 00:33:29,019 Vale, pues 845 00:33:29,019 --> 00:33:31,019 ¿Cómo se hace una conexión? 846 00:33:37,789 --> 00:33:39,450 Pues este objeto de aquí 847 00:33:39,450 --> 00:33:43,509 Es un objeto de la API JDBC 848 00:33:43,509 --> 00:33:45,349 Que os sonará del trabajillo del año pasado 849 00:33:45,349 --> 00:33:47,730 Y este objeto pues tiene 850 00:33:47,730 --> 00:33:49,309 Un getConnection 851 00:33:49,309 --> 00:33:52,390 Donde tú, aunque está sobrecargado 852 00:33:52,390 --> 00:33:55,470 Pues bueno, lo que vamos a usar nosotros 853 00:33:55,470 --> 00:33:59,750 El método más usado 854 00:33:59,750 --> 00:34:00,730 Tiene tres parámetros 855 00:34:00,730 --> 00:34:02,730 Donde el primero sería 856 00:34:02,730 --> 00:34:05,529 La URL donde está la base de datos 857 00:34:05,529 --> 00:34:06,990 El segundo el usuario 858 00:34:06,990 --> 00:34:08,789 Y el otro la password 859 00:34:08,789 --> 00:34:09,630 ¿Vale? 860 00:34:15,460 --> 00:34:16,139 Entonces 861 00:34:16,139 --> 00:34:21,619 Vale 862 00:34:21,619 --> 00:34:24,760 Vamos a meterlo aquí en un 863 00:34:24,760 --> 00:34:26,219 Try catch 864 00:34:26,219 --> 00:34:30,349 Ahora, ¿qué hacemos? 865 00:34:31,389 --> 00:34:33,469 Cableamos, hardcodeamos 866 00:34:33,469 --> 00:34:34,949 Como lo queráis llamar 867 00:34:34,949 --> 00:34:36,769 A mí me gusta más cablear porque soy 868 00:34:36,769 --> 00:34:38,289 Antigua 869 00:34:38,289 --> 00:34:39,909 aquí los datos 870 00:34:39,909 --> 00:34:42,809 que feo, esto sí que sí 871 00:34:42,809 --> 00:34:46,829 efectivamente 872 00:34:46,829 --> 00:34:49,030 que feo, vamos a ponerlo como mínimo 873 00:34:49,030 --> 00:34:50,829 en un properties, que es que es donde 874 00:34:50,829 --> 00:34:52,110 se pone, ahí no 875 00:34:52,110 --> 00:34:54,809 vamos a poner estos tres datos que necesitamos 876 00:34:54,809 --> 00:34:56,590 en un properties, pues venga 877 00:34:56,590 --> 00:34:57,929 vamos a hacernos un properties 878 00:34:57,929 --> 00:35:01,010 aquí en recursos, por ejemplo 879 00:35:01,010 --> 00:35:05,480 un fichero 880 00:35:05,480 --> 00:35:06,539 properties 881 00:35:06,539 --> 00:35:18,539 Y aquí, ¿qué tres datos nos interesan? 882 00:35:18,820 --> 00:35:20,780 La URL de la base de datos 883 00:35:20,780 --> 00:35:23,139 El usuario 884 00:35:23,139 --> 00:35:26,800 Y la contraseña 885 00:35:26,800 --> 00:35:29,159 Pues aquí los vamos a poner 886 00:35:29,159 --> 00:35:30,559 El usuario y contraseña 887 00:35:30,559 --> 00:35:36,739 Qué feo esto, deberíamos haber hecho en nuestro esquema 888 00:35:36,739 --> 00:35:40,239 Cuando hicimos el esquema, la base de datos, ventas o coches 889 00:35:40,239 --> 00:35:40,960 O como se llamara 890 00:35:40,960 --> 00:35:43,199 teníamos que haber hecho un usuario para ella y poner aquí 891 00:35:43,199 --> 00:35:45,260 ese usuario, ¿vale? pues muy bien 892 00:35:45,260 --> 00:35:47,300 hecho, y es el usuario que habría 893 00:35:47,300 --> 00:35:47,880 que poner aquí 894 00:35:47,880 --> 00:35:50,719 ¿vale? bueno 895 00:35:50,719 --> 00:35:52,559 como no está hecho voy a poner esto 896 00:35:52,559 --> 00:35:55,159 y aquí la url que necesita el 897 00:35:55,159 --> 00:35:57,079 driver manager, pues la 898 00:35:57,079 --> 00:35:59,179 API JDBC necesita que siga un 899 00:35:59,179 --> 00:36:01,380 estándar, primero se pone 900 00:36:01,380 --> 00:36:04,960 JDBC 901 00:36:04,960 --> 00:36:06,619 luego se pone 902 00:36:06,619 --> 00:36:08,639 la tecnología de la base de datos en la que 903 00:36:08,639 --> 00:36:09,099 estás 904 00:36:09,099 --> 00:36:12,320 y ahora ya sí que pones la url 905 00:36:12,320 --> 00:36:15,519 En nuestro caso la base de datos está en localhost 906 00:36:15,519 --> 00:36:16,199 Entonces 907 00:36:16,199 --> 00:36:18,420 Aquí 908 00:36:18,420 --> 00:36:21,039 Esto con las barritas siempre 909 00:36:21,039 --> 00:36:22,500 Me hago un lío 910 00:36:22,500 --> 00:36:24,860 Entonces 911 00:36:24,860 --> 00:36:27,519 Yo creo que 912 00:36:27,519 --> 00:36:31,260 Vamos a lanzarnos sin mirar la chuleta 913 00:36:31,260 --> 00:36:33,360 Y si nos da un error de no encuentro 914 00:36:33,360 --> 00:36:34,960 La conexión, pues ya la cambiamos 915 00:36:34,960 --> 00:36:36,559 URL 916 00:36:36,559 --> 00:36:39,079 La IP que fuera, claro, en mi caso 917 00:36:39,079 --> 00:36:40,219 Está la base de datos aquí 918 00:36:40,219 --> 00:36:41,980 puerto en el que escucha 919 00:36:41,980 --> 00:36:44,460 lo hemos dejado en el puerto por defecto 920 00:36:44,460 --> 00:36:46,460 de MySQL que es 3306 921 00:36:46,460 --> 00:36:47,380 en el que lo dejamos 922 00:36:47,380 --> 00:36:50,000 si dejamos el 3306 923 00:36:50,000 --> 00:36:52,039 ya está, no tendríamos que hacer nada más 924 00:36:52,039 --> 00:36:54,559 si le cambiamos, si hemos cambiado de puerto 925 00:36:54,559 --> 00:36:56,199 al gestor de base de datos 926 00:36:56,199 --> 00:36:57,800 pues pondríamos aquí el puerto nuevo 927 00:36:57,800 --> 00:36:58,920 el que fuera 928 00:36:58,920 --> 00:37:02,719 si está en el 3306 me da igual dejarlo así que no ponerlo 929 00:37:02,719 --> 00:37:06,260 y aquí pues vamos a poner la base 930 00:37:06,260 --> 00:37:07,880 de datos que creo que se llamaba 931 00:37:07,880 --> 00:37:08,599 Coches 932 00:37:08,599 --> 00:37:13,139 Entonces a la conexión se le pueden poner 933 00:37:13,139 --> 00:37:14,780 Además parámetros 934 00:37:14,780 --> 00:37:16,300 Pues la 935 00:37:16,300 --> 00:37:18,880 Zona horaria, etc 936 00:37:18,880 --> 00:37:21,639 Pero el resto de parámetros que le puedes poner 937 00:37:21,639 --> 00:37:22,420 A la conexión 938 00:37:22,420 --> 00:37:25,280 Puede que hagan falta, puede que no hagan falta 939 00:37:25,280 --> 00:37:27,059 Depende del driver que estés usando 940 00:37:27,059 --> 00:37:28,659 Depende de la versión de Java que estés usando 941 00:37:28,659 --> 00:37:31,019 Depende de un montón de cosas random 942 00:37:31,019 --> 00:37:33,159 Entonces vamos a no ponerle 943 00:37:33,159 --> 00:37:48,539 Es que no sé en qué sentido 944 00:37:48,539 --> 00:37:50,960 Es que puede que haya puesto la barra al revés 945 00:37:50,960 --> 00:37:52,360 Porque si no 946 00:37:52,360 --> 00:37:54,860 Efectivamente sería el carácter de escape barra C 947 00:37:54,860 --> 00:37:56,579 A ver, venga 948 00:37:56,579 --> 00:37:58,079 Vamos a mirar la chuleta 949 00:37:58,079 --> 00:38:00,619 Pero la memoria la tenéis que desarrollar vosotros 950 00:38:00,619 --> 00:38:01,719 Que a mí ya no me hace falta 951 00:38:01,719 --> 00:38:06,019 Vamos a ver 952 00:38:06,019 --> 00:38:08,460 Donde tenemos 953 00:38:08,460 --> 00:38:11,679 Era al otro lado de como la he puesto 954 00:38:11,679 --> 00:38:12,960 Efectivamente 955 00:38:12,960 --> 00:38:14,480 Vale 956 00:38:14,480 --> 00:38:16,599 Si es que puesta así 957 00:38:16,599 --> 00:38:19,079 Como tu bien dices se convertiría en una 958 00:38:19,079 --> 00:38:20,340 Claro 959 00:38:20,340 --> 00:38:22,769 Vale 960 00:38:22,769 --> 00:38:26,750 He puesto la interrogación 961 00:38:26,750 --> 00:38:29,050 Porque he dicho que la cadena de conexión 962 00:38:29,050 --> 00:38:31,110 Puede admitir parámetros 963 00:38:31,110 --> 00:38:34,030 Pues no sé qué 964 00:38:34,030 --> 00:38:35,909 Time, UTC, no sé cuántos 965 00:38:35,909 --> 00:38:37,750 Que puede que hagan falta o no 966 00:38:37,750 --> 00:38:39,789 También depende del driver en el que estés trabajando 967 00:38:39,789 --> 00:38:41,110 En qué esquema estés 968 00:38:41,110 --> 00:38:42,949 Entonces, por ahora yo no los pongo 969 00:38:42,949 --> 00:38:44,530 Solo un error de ejecución nos lo pide 970 00:38:44,530 --> 00:38:46,429 Pues pum, ahí tratamos de ensuciar el problema 971 00:38:46,429 --> 00:38:51,659 Pues ya tenemos nuestro properties 972 00:38:51,659 --> 00:38:53,460 Y ahora ya sí 973 00:38:53,460 --> 00:38:56,019 Nuestra aplicación tendrá que sacar 974 00:38:56,019 --> 00:38:57,659 Aquí del properties 975 00:38:57,659 --> 00:39:04,280 Properties 976 00:39:04,280 --> 00:39:04,800 Vale 977 00:39:04,800 --> 00:39:08,940 De este objeto properties 978 00:39:08,940 --> 00:39:12,019 Que creábamos así 979 00:39:12,019 --> 00:39:15,619 Que la dejaba útil 980 00:39:15,619 --> 00:39:24,449 Vale, pues esto era 981 00:39:24,449 --> 00:39:28,510 Get input o algo así, ¿no? 982 00:39:29,050 --> 00:39:29,530 Get 983 00:39:29,530 --> 00:39:32,289 Del properties 984 00:39:32,289 --> 00:39:33,889 No, lo add, ¿verdad? 985 00:39:34,630 --> 00:39:36,610 Con este cargábamos un input string 986 00:39:36,610 --> 00:39:38,570 Y el input string 987 00:39:38,570 --> 00:39:39,869 Como esto está en recursos 988 00:39:39,869 --> 00:39:42,010 no podemos hacer un FileInputString 989 00:39:42,010 --> 00:39:44,050 tal cual, bueno podemos hacer un FileInputString 990 00:39:44,050 --> 00:39:45,769 pero tenemos que poner toda la ruta 991 00:39:45,769 --> 00:39:47,630 del proyecto, entonces 992 00:39:47,630 --> 00:39:49,670 hombre, es feo porque entonces 993 00:39:49,670 --> 00:39:51,949 le estamos dando una ubicación 994 00:39:51,949 --> 00:39:53,289 del sistema de archivos 995 00:39:53,289 --> 00:39:55,769 entonces esto podíamos sacar 996 00:39:55,769 --> 00:39:57,489 cuando el recurso estaba en 997 00:39:57,489 --> 00:39:59,769 resources, pues podemos 998 00:39:59,769 --> 00:40:01,670 sacar, como resources 999 00:40:01,670 --> 00:40:03,710 está en el path de la aplicación 1000 00:40:03,710 --> 00:40:05,650 cualquier cosa que está en el path de la 1001 00:40:05,650 --> 00:40:07,690 aplicación, podíamos convertir 1002 00:40:07,690 --> 00:40:09,489 la InputString con 1003 00:40:09,489 --> 00:40:18,440 poniendo, perdón, el nombre de la clase 1004 00:40:18,440 --> 00:40:21,639 si no lo miramos rápido en su momento cuando lo hicimos 1005 00:40:21,639 --> 00:40:24,239 el nombre de la clase en la que estoy 1006 00:40:24,239 --> 00:40:26,260 getResourcesStream 1007 00:40:26,260 --> 00:40:31,139 y aquí base de datos punto properties 1008 00:40:31,139 --> 00:40:44,730 vale, entonces 1009 00:40:44,730 --> 00:40:48,590 si yo aquí le doy un recurso a este método 1010 00:40:48,590 --> 00:40:51,369 cógeme recurso como flujo 1011 00:40:51,369 --> 00:40:52,989 conviérteme recurso a flujo 1012 00:40:52,989 --> 00:40:55,590 si yo a este método 1013 00:40:55,590 --> 00:40:57,489 le doy 1014 00:40:57,489 --> 00:40:59,809 algo que esté en el path 1015 00:40:59,809 --> 00:41:00,750 tiene que estar en el path 1016 00:41:00,750 --> 00:41:03,570 y esto está porque cuando el proyecto se pasa a hard 1017 00:41:03,570 --> 00:41:05,769 la carpeta resurfe se va al path automáticamente 1018 00:41:05,769 --> 00:41:08,030 si yo le doy algo que está en el path 1019 00:41:08,030 --> 00:41:09,610 de ahí me saca 1020 00:41:09,610 --> 00:41:11,670 un input string, que es justo lo que 1021 00:41:11,670 --> 00:41:13,230 necesita prod 1022 00:41:13,230 --> 00:41:15,469 a través de load para ahora ya sacar las propiedades 1023 00:41:15,469 --> 00:41:17,090 claro 1024 00:41:17,090 --> 00:41:19,389 y este método lo llamas 1025 00:41:19,389 --> 00:41:21,670 para la clase en la que 1026 00:41:21,670 --> 00:41:23,269 lo estás haciendo, o sea, la que sea 1027 00:41:23,269 --> 00:41:24,449 como estoy en esta, en esta 1028 00:41:24,449 --> 00:41:27,809 vale, y ahora ya 1029 00:41:27,809 --> 00:41:29,909 podemos poner aquí las tres cosas 1030 00:41:29,909 --> 00:41:34,050 prop.getproperty 1031 00:41:34,050 --> 00:41:38,090 url 1032 00:41:38,090 --> 00:41:47,949 aquí lo mismo 1033 00:41:47,949 --> 00:41:58,539 y aquí 1034 00:41:58,539 --> 00:42:00,900 lo mismo 1035 00:42:00,900 --> 00:42:02,900 pero no igual 1036 00:42:02,900 --> 00:42:05,219 user 1037 00:42:05,219 --> 00:42:11,090 y password 1038 00:42:11,090 --> 00:42:12,309 la verdad es que 1039 00:42:12,309 --> 00:42:14,429 Me está 1040 00:42:14,429 --> 00:42:17,510 Doliendo en el alma 1041 00:42:17,510 --> 00:42:20,110 Aquí, bueno, para que el compilador 1042 00:42:20,110 --> 00:42:20,690 Se calle 1043 00:42:20,690 --> 00:42:22,530 Con este de aquí 1044 00:42:22,530 --> 00:42:27,739 Y ya está, ya tengo la conexión 1045 00:42:27,739 --> 00:42:29,639 Que se la paso a este y se acabó 1046 00:42:29,639 --> 00:42:32,219 A ver, lo que me está doliendo aquí en el alma 1047 00:42:32,219 --> 00:42:34,280 Eh, 10 y 20 1048 00:42:34,280 --> 00:42:36,340 Joder 1049 00:42:36,340 --> 00:42:37,739 Vale 1050 00:42:37,739 --> 00:42:39,860 Lo que me está doliendo 1051 00:42:39,860 --> 00:42:41,280 Ah, no, que hoy 1052 00:42:41,280 --> 00:42:44,320 Ay, perdón, es que no es martes hoy, hoy es jueves 1053 00:42:44,320 --> 00:42:46,280 vale, vale, nos queda otra hora 1054 00:42:46,280 --> 00:42:48,300 y la de después, hemos consumido 1055 00:42:48,300 --> 00:42:49,940 una solo, vale, vale, vale 1056 00:42:49,940 --> 00:42:50,599 ya decía yo 1057 00:42:50,599 --> 00:42:53,579 Andrea, ¿por qué me miras así? 1058 00:42:54,000 --> 00:42:55,079 primero no me llamó Andrea 1059 00:42:55,079 --> 00:42:57,920 perdón, Ana 1060 00:42:57,920 --> 00:43:00,800 no sé, es que me mirabas como con desconfianza 1061 00:43:00,800 --> 00:43:02,719 vale, vale 1062 00:43:02,719 --> 00:43:06,500 no, es que has dicho 1063 00:43:06,500 --> 00:43:07,880 como que solo hemos terminado la hora 1064 00:43:07,880 --> 00:43:09,159 como que solo te quedas en mucho contenido 1065 00:43:09,159 --> 00:43:11,739 bueno, claro, queda 1066 00:43:11,739 --> 00:43:14,039 es que de repente he dicho, uy, han pasado ya dos horas 1067 00:43:14,039 --> 00:43:15,239 porque creía que estábamos a martes 1068 00:43:15,239 --> 00:43:16,320 pero no estamos a lunes 1069 00:43:16,320 --> 00:43:21,440 Llevo tres noches 1070 00:43:21,440 --> 00:43:23,019 prácticamente sin dormir, así que 1071 00:43:23,019 --> 00:43:24,539 tenéis que disculparlo todo 1072 00:43:24,539 --> 00:43:26,940 Vale, entonces 1073 00:43:26,940 --> 00:43:29,099 lo que decía es que me está doliendo aquí en el alma 1074 00:43:29,099 --> 00:43:29,880 y en el corazón 1075 00:43:29,880 --> 00:43:33,139 el haber hecho este chorizongo 1076 00:43:33,139 --> 00:43:35,119 aquí dentro del main, esto de verdad 1077 00:43:35,119 --> 00:43:37,059 que feo, tendríamos que haber 1078 00:43:37,059 --> 00:43:39,000 hecho una clase, que me permita 1079 00:43:39,000 --> 00:43:40,840 aquí con el red conectio sacar la conexión 1080 00:43:40,840 --> 00:43:42,079 una clase singleton 1081 00:43:42,079 --> 00:43:44,739 ¿Qué menos? 1082 00:43:44,739 --> 00:43:46,800 es que esto, no tardamos nada en hacerlo 1083 00:43:46,800 --> 00:43:48,480 pero por favor, que menos, es que esto 1084 00:43:48,480 --> 00:43:50,820 me duele en el alma subir este proyecto a la 1085 00:43:50,820 --> 00:43:54,110 virtual así, pues eso 1086 00:43:54,110 --> 00:43:55,590 vamos a hacer, hombre, di que sí 1087 00:43:55,590 --> 00:44:00,429 oye, pues así le va a ir 1088 00:44:00,429 --> 00:44:00,710 bien 1089 00:44:00,710 --> 00:44:08,230 no sé yo, eh, venga, ¿a dónde vamos 1090 00:44:08,230 --> 00:44:10,030 la utilidad del no sé qué, del 1091 00:44:10,030 --> 00:44:12,349 conexión, de implementación 1092 00:44:12,349 --> 00:44:13,409 del service 1093 00:44:13,409 --> 00:44:17,530 Vamos a hacer otro paquete 1094 00:44:17,530 --> 00:44:20,250 Si será por paquetes 1095 00:44:20,250 --> 00:44:24,150 A ver, porque hemos puesto 1096 00:44:24,150 --> 00:44:25,989 Una base de datos coches de caca 1097 00:44:25,989 --> 00:44:27,110 Que solo tiene una tabla 1098 00:44:27,110 --> 00:44:30,050 Si tuviera muchas, cada paquete 1099 00:44:30,050 --> 00:44:31,289 Tendría un montón de clases 1100 00:44:31,289 --> 00:44:34,250 Un DAO por cada clase y tabla 1101 00:44:34,250 --> 00:44:35,730 No, no, no, por cada fila 1102 00:44:35,730 --> 00:44:37,489 No, por cada clase, por cada tabla 1103 00:44:37,489 --> 00:44:42,949 No, no, no, no 1104 00:44:42,949 --> 00:44:44,650 No, los paquetes serían los mismos, 1105 00:44:44,829 --> 00:44:46,369 pero cada paquete tendría más clases. 1106 00:44:46,929 --> 00:44:49,670 Eso, el DAO tendría un montón de clases. 1107 00:44:50,190 --> 00:44:52,829 El service tendría uno por tabla también. 1108 00:44:54,010 --> 00:44:54,829 Pues venga. 1109 00:44:59,409 --> 00:45:00,570 Sí, claro. 1110 00:45:00,769 --> 00:45:01,170 Sí, sí, sí. 1111 00:45:01,550 --> 00:45:03,110 Entonces, me he hecho un paquete con él. 1112 00:45:03,449 --> 00:45:04,949 No me gusta el nombre, muy feo. 1113 00:45:05,210 --> 00:45:05,610 Pero bueno. 1114 00:45:06,329 --> 00:45:09,570 Y ahora aquí nos vamos a hacer nuestra clase singleton. 1115 00:45:11,610 --> 00:45:12,090 Justo. 1116 00:45:12,090 --> 00:45:14,329 Pero veis, veis como la memoria se os va desarrollando 1117 00:45:14,329 --> 00:45:16,230 Claro, es que no es fácil 1118 00:45:16,230 --> 00:45:17,309 Acordarse de 1119 00:45:17,309 --> 00:45:23,219 Ya, pero es que útil es tan genérico 1120 00:45:23,219 --> 00:45:28,860 Ahí, es que no sé 1121 00:45:28,860 --> 00:45:31,239 No acabo de encontrar yo los nombres bonitos 1122 00:45:31,239 --> 00:45:32,320 Pero bueno 1123 00:45:32,320 --> 00:45:35,440 Pase usted 1124 00:45:35,440 --> 00:45:36,780 Sí 1125 00:45:36,780 --> 00:45:42,260 Clase Singleton para obtener la conexión 1126 00:45:42,260 --> 00:45:46,179 Sí, a un momento, un momento, pero lo copiamos bien 1127 00:45:46,179 --> 00:45:51,739 Clase singleton para obtener la conexión 1128 00:45:51,739 --> 00:45:54,300 Joder, no es que no atino ni con el este 1129 00:45:54,300 --> 00:45:55,460 Este 1130 00:45:55,460 --> 00:45:58,380 Vale, entonces la clase singleton 1131 00:45:58,380 --> 00:46:02,340 Su propiedad va a ser la conexión 1132 00:46:02,340 --> 00:46:03,599 ¿Vale? Va a ser esta 1133 00:46:03,599 --> 00:46:06,099 Que inicialmente es null 1134 00:46:06,099 --> 00:46:15,469 Vale, y ahora esta clase singleton 1135 00:46:15,469 --> 00:46:17,329 Tendrá su getConnection 1136 00:46:17,329 --> 00:46:18,650 Su método 1137 00:46:18,650 --> 00:46:25,639 Su método 1138 00:46:25,639 --> 00:46:26,039 Get 1139 00:46:26,039 --> 00:46:28,659 Connection 1140 00:46:28,659 --> 00:46:32,260 Y ahora, este método es el que ya se asegura 1141 00:46:32,260 --> 00:46:33,880 Si es la primera vez 1142 00:46:33,880 --> 00:46:34,880 Que me llamas 1143 00:46:34,880 --> 00:46:36,159 Es decir 1144 00:46:36,159 --> 00:46:39,980 Si connection es igual a null 1145 00:46:39,980 --> 00:46:41,519 Entonces 1146 00:46:41,519 --> 00:46:42,920 Ahora ya sí que sí 1147 00:46:42,920 --> 00:46:45,739 Hay que hacer todo el mondongo ese del otro lado 1148 00:46:45,739 --> 00:46:47,219 Ese 1149 00:46:47,219 --> 00:46:48,360 Solo que hay que pasarle 1150 00:46:48,360 --> 00:46:49,099 Otro string 1151 00:46:49,099 --> 00:46:52,679 Sí, sí, sí 1152 00:46:52,679 --> 00:46:54,440 Pero ahora lo hacemos, a ver, ¿dónde estamos? 1153 00:46:54,579 --> 00:46:55,500 ¿El main? ¿Dónde está el main? 1154 00:46:57,400 --> 00:46:58,340 He cerrado el main, ¿verdad? 1155 00:46:58,340 --> 00:47:02,119 He cerrado el main 1156 00:47:02,119 --> 00:47:03,420 Ah, no, es que era 1157 00:47:03,420 --> 00:47:04,780 Ah, es que se llama ventas app 1158 00:47:04,780 --> 00:47:06,340 Vale, vale, vale 1159 00:47:06,340 --> 00:47:09,280 Vale, pues entonces, todo este rollo patatero 1160 00:47:09,280 --> 00:47:11,860 Todo esto 1161 00:47:11,860 --> 00:47:14,699 Lo vamos a quitar de aquí 1162 00:47:14,699 --> 00:47:16,559 Ahora este ya está un poco más bonito 1163 00:47:16,559 --> 00:47:17,659 Porque es que era horroroso 1164 00:47:17,659 --> 00:47:19,460 No sé cómo no habéis dicho nada 1165 00:47:19,460 --> 00:47:21,139 Vale 1166 00:47:21,139 --> 00:47:22,280 Es que lo hemos pensado 1167 00:47:22,280 --> 00:47:24,719 Sois la generación de la de 1168 00:47:24,719 --> 00:47:26,239 Que me lo den todo, de hecho 1169 00:47:26,239 --> 00:47:28,019 A mí me vale todo 1170 00:47:28,019 --> 00:47:29,840 Claro 1171 00:47:29,840 --> 00:47:31,980 Entonces ahora 1172 00:47:31,980 --> 00:47:34,000 Aquí 1173 00:47:34,000 --> 00:47:36,340 Con igual a null 1174 00:47:36,340 --> 00:47:39,300 GetConnections 1175 00:47:39,300 --> 00:47:40,679 Y con es igual a null 1176 00:47:40,679 --> 00:47:45,300 La creo con todo este rollo que he hecho aquí 1177 00:47:51,139 --> 00:47:53,400 vale, a ver un momentito 1178 00:47:53,400 --> 00:47:55,320 que lo repase, hace la conexión 1179 00:47:55,320 --> 00:47:56,940 y ahora 1180 00:47:56,940 --> 00:47:59,199 ya, y ahora yo tengo mi else 1181 00:47:59,199 --> 00:48:01,239 de leave, entonces si es 1182 00:48:01,239 --> 00:48:02,679 null, la crea 1183 00:48:02,679 --> 00:48:03,960 vale 1184 00:48:03,960 --> 00:48:05,840 y si no 1185 00:48:05,840 --> 00:48:08,820 y si no nada 1186 00:48:08,820 --> 00:48:11,079 es decir, me falta aquí un return 1187 00:48:11,079 --> 00:48:12,400 con, y se acabó 1188 00:48:12,400 --> 00:48:16,320 vale, ya está este método, entonces 1189 00:48:16,320 --> 00:48:18,599 si es null, la crea, y si no es null 1190 00:48:18,599 --> 00:48:20,679 no hace nada, y en ambos casos 1191 00:48:20,679 --> 00:48:22,360 la devuelvo a orden de parámetro, vale 1192 00:48:22,360 --> 00:48:30,059 Luego este es un singleton para asegurarse de que la aplicación solo usa una conexión, un objeto conexión, no instancia cada dos por tres. 1193 00:48:30,860 --> 00:48:38,820 Y ahora ya sí que sí, a este le llamamos con, no me acuerdo cómo se llamaba la clase. 1194 00:48:47,230 --> 00:48:50,550 Bien, muy bien, muy bien, qué rápidos estáis, de verdad, muy bien. 1195 00:48:50,550 --> 00:48:56,349 Que quite el que 1196 00:48:56,349 --> 00:49:01,030 Ah, vale, vale, vale 1197 00:49:01,030 --> 00:49:02,809 Sí, sí, sí, vale, vale 1198 00:49:02,809 --> 00:49:05,829 Muy bien 1199 00:49:05,829 --> 00:49:09,599 Creo que ahora ya está bonito, ¿verdad? 1200 00:49:11,179 --> 00:49:11,579 Vale 1201 00:49:11,579 --> 00:49:16,980 Para que no se vea 1202 00:49:16,980 --> 00:49:18,400 ¡Hala! 1203 00:49:19,079 --> 00:49:21,039 Hombre, por Dios, por Dios 1204 00:49:21,039 --> 00:49:22,559 Cómo ha mejorado la cosa 1205 00:49:22,559 --> 00:49:23,139 Qué bonito 1206 00:49:23,139 --> 00:49:25,760 De verdad, qué bonito 1207 00:49:25,760 --> 00:49:27,139 Vale 1208 00:49:27,139 --> 00:49:30,920 Aún así 1209 00:49:30,920 --> 00:49:32,000 Esto 1210 00:49:32,000 --> 00:49:34,800 Este 1211 00:49:34,800 --> 00:49:41,139 No, este troncho está bien 1212 00:49:41,139 --> 00:49:44,019 Vale, iba a poner un try con recursos 1213 00:49:44,019 --> 00:49:46,159 Pero no, porque es que no queremos cerrar la conexión 1214 00:49:46,159 --> 00:49:48,159 Vale, está bien 1215 00:49:48,159 --> 00:49:51,920 Bueno, a ver, está feo, perdón 1216 00:49:51,920 --> 00:49:54,280 Porque esto debería ser un log 1217 00:49:54,280 --> 00:49:56,119 Info, log de bug 1218 00:49:56,119 --> 00:49:58,320 Pero bueno, eso ya lo dejamos para otro momento 1219 00:49:58,320 --> 00:50:01,860 Claro, debería 1220 00:50:01,860 --> 00:50:04,380 Que menos que mandar a un log, pero bueno 1221 00:50:04,380 --> 00:50:06,260 Y ya está 1222 00:50:06,260 --> 00:50:08,260 Entonces, vamos a ver 1223 00:50:08,260 --> 00:50:10,360 Si por lo menos hace la conexión 1224 00:50:10,360 --> 00:50:12,300 Y podemos crear una venta 1225 00:50:12,300 --> 00:50:14,260 Vamos a crear una venta 1226 00:50:15,159 --> 00:50:16,260 Eh, venta 1227 00:50:16,960 --> 00:50:19,460 Vamos a crear una venta 1228 00:50:19,460 --> 00:50:21,900 New venta 1229 00:50:21,900 --> 00:50:25,460 Y ahora 1230 00:50:25,460 --> 00:50:29,719 Uy, que mal 1231 00:50:29,719 --> 00:50:32,760 Venta.set 1232 00:50:32,760 --> 00:50:33,579 Coche 1233 00:50:33,579 --> 00:50:35,320 Pues que coche queremos 1234 00:50:35,320 --> 00:50:37,219 Un Renault 1235 00:50:37,219 --> 00:50:41,619 Venta.set 1236 00:50:41,619 --> 00:50:43,440 Color 1237 00:50:43,440 --> 00:50:45,800 Pues queremos un 1238 00:50:45,800 --> 00:50:47,239 White 1239 00:50:47,239 --> 00:50:50,300 Blanco 1240 00:50:50,300 --> 00:50:52,099 No nos gusta ese color 1241 00:50:52,099 --> 00:50:58,039 Entrar en conexión 1242 00:50:58,039 --> 00:50:59,920 Aquí, hemos entrado en conexión 1243 00:50:59,920 --> 00:51:02,300 Un poco más arriba 1244 00:51:02,300 --> 00:51:10,260 Pues no, en set ID 1245 00:51:10,260 --> 00:51:11,699 Nos metemos en otro berenjenal 1246 00:51:11,699 --> 00:51:13,940 Aquí es un berenjenal tras otro 1247 00:51:13,940 --> 00:51:16,539 Pero este es fácil de resolver 1248 00:51:16,539 --> 00:51:18,019 Vale, está 1249 00:51:18,019 --> 00:51:20,380 Ahora, set ID 1250 00:51:20,380 --> 00:51:23,559 ¿Dónde estamos? Aquí 1251 00:51:23,559 --> 00:51:26,059 Vaya patata de aplicación 1252 00:51:26,059 --> 00:51:30,349 sería esta, o no 1253 00:51:30,349 --> 00:51:32,469 depende del contexto, si yo fijo 1254 00:51:32,469 --> 00:51:34,289 el ID por programa, por código 1255 00:51:34,289 --> 00:51:36,170 porque voy a meter la pata sí o sí 1256 00:51:36,170 --> 00:51:37,869 y voy a tener 1257 00:51:37,869 --> 00:51:40,250 porque seguro que repito IDs, porque yo 1258 00:51:40,250 --> 00:51:42,550 no puedo verificar contra la base de datos 1259 00:51:42,550 --> 00:51:43,929 continuamente que el ID es único 1260 00:51:43,929 --> 00:51:47,650 claro, entonces, ¿qué pasa? 1261 00:51:47,809 --> 00:51:49,489 que es que ese ID 1262 00:51:49,489 --> 00:51:52,250 debería ser autoincrement, que es lo que 1263 00:51:52,250 --> 00:51:54,210 hacemos normalmente, mi tabla 1264 00:51:54,210 --> 00:51:56,269 tendrá todos los campos que sean, pero yo 1265 00:51:56,269 --> 00:51:58,349 le añade un id autoincrement para en el 1266 00:51:58,349 --> 00:52:00,349 peor de los casos tener siempre una clave primaria 1267 00:52:00,349 --> 00:52:01,670 con la garantía de que es única 1268 00:52:01,670 --> 00:52:03,750 entonces vamos a 1269 00:52:03,750 --> 00:52:06,190 voy a parar esto porque si no el vídeo