1
00:00:00,180 --> 00:00:04,620
Continuemos a tal momento hemos estado trabajando con una sola conexión a la base de datos, implementando

2
00:00:04,620 --> 00:00:08,160
el patrón de diseño singleton en la clase conexión base datos.

3
00:00:08,490 --> 00:00:15,870
Si revisamos el método Getting Taus por acá con control B, se fijan se crea una instancia cuando nul

4
00:00:15,960 --> 00:00:21,630
la primera vez mediante el trayec manager, el que con hecho creamos la conexión, nos conectamos al

5
00:00:21,630 --> 00:00:27,240
acetato y la devolvemos, pero después ya va a existir ese qaue que se invoca al quet instance de esta

6
00:00:27,240 --> 00:00:33,450
clase siempre devuelve la misma conexión, incluso si regresamos al ejemplo JS a cualquiera.

7
00:00:33,570 --> 00:00:39,120
Acá tenemos un trade con recurso, por lo tanto se crea esta conexión la primera vez y después bueno,

8
00:00:39,120 --> 00:00:46,140
podemos realizar consulta con el distar o crear o eliminar todo dentro del mismo contexto, de la misma

9
00:00:46,140 --> 00:00:46,530
conexión.

10
00:00:46,680 --> 00:00:53,190
Y al final de la aplicación del método Main cerramos con el auto Closs, pero tenemos otra forma abrir

11
00:00:53,190 --> 00:00:57,120
y cerrar conexión en cada consulta u operación.

12
00:00:57,150 --> 00:01:02,250
Por ejemplo, en el repositorio, en el distar, abrir y cerrar la conexión una vez que haya molestado

13
00:01:02,250 --> 00:01:07,500
todos los productos, por ejemplo, o bien una vez que eliminamos un producto por el Heidy, lo mismo

14
00:01:07,590 --> 00:01:08,610
cerramos la conexión.

15
00:01:08,700 --> 00:01:11,130
Los mismos al crear o al actualizar.

16
00:01:11,310 --> 00:01:15,000
Después del Steinmetz o Premiere Statement, cerramos la conexión.

17
00:01:15,120 --> 00:01:17,850
Pero va a depender cuando usamos una, cuando usamos otra.

18
00:01:17,970 --> 00:01:23,010
Bueno, depende de la cantidad usuario concurrente que estén conectados, que estén utilizando la aplicación.

19
00:01:23,070 --> 00:01:29,100
Por ejemplo, si una aplicación web es diferente forma y escenario, una forma sería según el contexto.

20
00:01:29,160 --> 00:01:35,640
Por ejemplo, si una aplicación web vamos a tener solicitudes web http, entonces en cada request o

21
00:01:35,640 --> 00:01:39,870
petición un usuario realiza una solicitud y ahí podemos abrir.

22
00:01:39,960 --> 00:01:42,210
Y cuando finaliza el rico es http.

23
00:01:42,300 --> 00:01:43,320
Cerramos la conexión.

24
00:01:43,380 --> 00:01:43,830
Se fijan.

25
00:01:43,920 --> 00:01:47,300
Entonces podemos abrir y cerrar y todo el contexto del request.

26
00:01:47,430 --> 00:01:49,980
Hoy podemos mantener una sola conexión abierta.

27
00:01:50,130 --> 00:01:52,710
De eso depende el contexto y también cómo lo manejemos.

28
00:01:52,800 --> 00:01:58,770
Otra forma es implementar un pull de conexiones, es decir, un grupo de varias conexiones abierta y

29
00:01:58,770 --> 00:02:03,540
se pueden reutilizar en diferentes consultas, operaciones o usuario conectado.

30
00:02:03,630 --> 00:02:07,170
Pero la idea de clase es ver otra forma distinta al singleton.

31
00:02:07,350 --> 00:02:11,760
Recuerde que Singleton es una conexión dentro de nuestro contexto.

32
00:02:11,910 --> 00:02:15,660
En este caso, nuestro contexto sería nuestra aplicación con el método main.

33
00:02:15,960 --> 00:02:17,910
Entonces ahora vamos a modificar este ejemplo.

34
00:02:18,000 --> 00:02:20,700
De hecho, lo vamos a clonar para no tener que modificarlo.

35
00:02:20,850 --> 00:02:21,540
Vamos a clonar.

36
00:02:21,600 --> 00:02:28,680
Vamos a crear otro proyecto a partir de este para tener una conexión por operación o consulta en el

37
00:02:28,770 --> 00:02:29,460
repositorio.

38
00:02:29,730 --> 00:02:30,210
Otra forma.

39
00:02:30,540 --> 00:02:36,000
Entonces nos vamos a la pestaña Proyectos con AL1 y vamos a copiar acá.

40
00:02:36,150 --> 00:02:36,510
Ya va.

41
00:02:36,510 --> 00:02:39,360
JS Nuestro proyecto lo copiamos.

42
00:02:39,600 --> 00:02:40,620
Hacemos un clic acá.

43
00:02:40,710 --> 00:02:41,730
Clic derecho.

44
00:02:41,820 --> 00:02:42,420
Copiar.

45
00:02:42,780 --> 00:02:45,300
Hacemos un clic por acá abajo en cualquier parte.

46
00:02:45,360 --> 00:02:45,830
Un clic.

47
00:02:46,290 --> 00:02:46,800
Luego clic.

48
00:02:46,800 --> 00:02:47,280
Derecho.

49
00:02:47,280 --> 00:02:49,380
Pegar y le damos un nombre.

50
00:02:49,380 --> 00:02:51,540
Por ejemplo, guión bajo Klout.

51
00:02:51,810 --> 00:02:53,490
Desgarrar un nombre que queramos.

52
00:02:54,360 --> 00:02:54,720
Globus.

53
00:02:54,870 --> 00:02:56,670
Ok, perfecto.

54
00:02:56,730 --> 00:02:57,420
Ahí lo tenemos.

55
00:02:57,510 --> 00:02:58,380
Ahora lo vamos a abrir.

56
00:02:58,410 --> 00:03:04,320
Para eso nos vamos a ir a File, cerrar proyecto, cerramos el proyecto actual y lo vamos a abrir.

57
00:03:04,680 --> 00:03:07,710
Buscamos en Open, nos vamos a curso.

58
00:03:07,710 --> 00:03:09,080
Yaba Ya va.

59
00:03:09,090 --> 00:03:10,470
JDBC Clouds.

60
00:03:10,560 --> 00:03:11,430
Hacemos un clic.

61
00:03:11,550 --> 00:03:11,960
Ok.

62
00:03:13,110 --> 00:03:13,560
Perfecto.

63
00:03:13,650 --> 00:03:15,660
Acá lo tenemos, de hecho, y lo vamos a revisar.

64
00:03:15,780 --> 00:03:21,540
Control 1 Cerrábamos llega, tenemos todas las clases del proyecto.

65
00:03:21,690 --> 00:03:27,340
Lo primero con control TAF debería modificar condición aceto para que no sea Singleton, pero eso después

66
00:03:27,340 --> 00:03:27,810
lo vamos a ver.

67
00:03:27,900 --> 00:03:31,260
Por ahora vamos a modificar el repositorio por acá.

68
00:03:31,290 --> 00:03:33,350
Pro-ducto, repository, implemento.

69
00:03:34,840 --> 00:03:38,000
Bien guet conexión paseada to get instance.

70
00:03:38,140 --> 00:03:41,200
Acá obtenemos la conexión actualmente Singleton.

71
00:03:41,620 --> 00:03:43,120
Entonces la idea es cerrar.

72
00:03:43,270 --> 00:03:48,130
En cada método el dictar por Heidy guardar.

73
00:03:48,160 --> 00:03:48,520
En fin.

74
00:03:49,000 --> 00:03:54,220
Pero para cerrar acá tenemos que crear el objeto, el connection, declarar este recurso.

75
00:03:54,340 --> 00:04:03,240
Entonces vamos a bajar, subimos acá, vamos a tener conexión connection con igual get con echo.

76
00:04:04,240 --> 00:04:04,890
Perfecto.

77
00:04:05,020 --> 00:04:05,650
Punto y coma.

78
00:04:06,460 --> 00:04:12,010
Ahora, en vez de utilizar el que connection en el statement, acá lo vamos a seleccionar y vamos a

79
00:04:12,010 --> 00:04:16,480
utilizar el con. Entonces los seleccionamos con Fijan.

80
00:04:17,550 --> 00:04:23,040
Entonces acá tenemos el recurso conexión y como lo tenemos dentro del TROI con recurso, automáticamente

81
00:04:23,050 --> 00:04:25,080
se cerrar de forma automática.

82
00:04:26,190 --> 00:04:29,400
Esto acá lo vamos a dejar acá es bien.

83
00:04:29,700 --> 00:04:34,890
Vamos a copiar esto acá, lo copiamos y lo tenemos que replicar en cada método.

84
00:04:35,010 --> 00:04:37,310
Entonces bajamos en el porahí.

85
00:04:38,840 --> 00:04:40,160
Por acá lo pegamos.

86
00:04:40,550 --> 00:04:42,260
Control V bajamos.

87
00:04:42,650 --> 00:04:44,990
Pero el prepar lo tengo que modificar.

88
00:04:45,080 --> 00:04:45,980
Entonces acá nos vamos.

89
00:04:46,070 --> 00:04:47,660
A qué conexión lo quitamos?

90
00:04:47,930 --> 00:04:49,790
De hecho, lo seleccionamos completo.

91
00:04:50,030 --> 00:04:52,760
Lo cambiamos por con punto pre.

92
00:04:52,760 --> 00:04:53,360
Présteme.

93
00:04:53,420 --> 00:04:54,530
Se fijan acá.

94
00:04:54,680 --> 00:04:56,240
De hecho, lo dejamos así.

95
00:04:56,690 --> 00:04:58,460
De esa forma cerramos la conexión.

96
00:04:58,550 --> 00:05:00,450
En cada método, en cada operación.

97
00:05:00,680 --> 00:05:02,120
Y continuamos con el siguiente.

98
00:05:02,180 --> 00:05:03,740
Con guardar acá lo mismo.

99
00:05:04,130 --> 00:05:05,060
Nos vamos al TROI.

100
00:05:05,630 --> 00:05:08,870
Pegamos, bajamos, modificamos.

101
00:05:09,200 --> 00:05:10,400
Nos vamos con hecho.

102
00:05:11,060 --> 00:05:13,640
Lo seleccionamos completo y con.

103
00:05:15,300 --> 00:05:25,680
Eliminar lo mismo, pegamos, bajamos y modificamos el que con ello lo seleccionamos con esta molesto.

104
00:05:25,950 --> 00:05:30,990
Ahora que estamos cerrando la conexión en cada método, ya no es necesario cerrar la conexión dentro

105
00:05:31,080 --> 00:05:32,250
del método main.

106
00:05:32,370 --> 00:05:37,530
Por ejemplo, vamos a modificar el ejemplo JDBC está acá.

107
00:05:37,680 --> 00:05:38,940
El primero se fijan.

108
00:05:39,570 --> 00:05:43,410
Esto ya no es necesario, simplemente lo quitamos y eliminamos esta línea.

109
00:05:44,380 --> 00:05:47,290
Bajamos y eliminamos el cache también.

110
00:05:47,560 --> 00:05:48,730
De hecho, todo esto acá.

111
00:05:50,490 --> 00:05:52,650
Eso lo quitamos y quería de esa forma.

112
00:05:53,160 --> 00:05:54,870
Y lo mismo con el APDAYC acá.

113
00:05:55,740 --> 00:05:59,250
Esto lo quitamos también vamos a quitar lo de abajo.

114
00:05:59,670 --> 00:06:05,910
Por acá seleccionamos, quitamos y nos vamos también al delito.

115
00:06:06,360 --> 00:06:06,780
Por acá.

116
00:06:07,410 --> 00:06:08,340
Exactamente lo mismo.

117
00:06:08,520 --> 00:06:11,460
Subimos, quitamos, bajamos.

118
00:06:13,390 --> 00:06:14,260
Y seleccionamos.

119
00:06:15,990 --> 00:06:16,890
Y ahí tenemos el ejemplo.

120
00:06:17,190 --> 00:06:20,490
Ahora, si lo ejecutamos, va a ocurrir un error con cualquiera.

121
00:06:20,910 --> 00:06:21,780
Vamos a ejemplos.

122
00:06:21,780 --> 00:06:23,850
JS Acá cuando creamos el producto.

123
00:06:24,090 --> 00:06:26,430
Por ahora voy a comentar el guardar.

124
00:06:26,790 --> 00:06:27,750
Solamente quiero listar.

125
00:06:27,900 --> 00:06:28,740
Entonces guardar.

126
00:06:28,800 --> 00:06:29,760
Lo comentamos.

127
00:06:30,060 --> 00:06:33,110
Comentamos solamente para litas, nada más para listar.

128
00:06:33,210 --> 00:06:33,840
Y por Heidy.

129
00:06:34,140 --> 00:06:34,740
Qué va a pasar?

130
00:06:34,860 --> 00:06:37,080
Bueno, primero el quitar lo ejecutar.

131
00:06:37,290 --> 00:06:39,210
Recuerden que listar va a cerrar la conexión.

132
00:06:39,270 --> 00:06:43,320
Se fijan y después por ahí va a tratar de obtener una conexión.

133
00:06:43,440 --> 00:06:49,950
La obtiene porque en base datos en conexión braceando sigue siendo singleton en el repositorio.

134
00:06:50,130 --> 00:06:56,730
Si nos vamos acá a productos repositorio implemento en el por ahí un poco más arriba por acá.

135
00:06:57,060 --> 00:06:58,320
Qué conexión y qué con?

136
00:06:58,680 --> 00:07:00,090
Utiliza el singleton acá?

137
00:07:01,030 --> 00:07:05,930
Entonces va a obtener la conexión que ya está cerrada, se cerró acá de forma automática.

138
00:07:06,070 --> 00:07:10,960
Entonces debería dar un error de que el Liter funciona bien, porque primero tiene la conexión.

139
00:07:11,020 --> 00:07:17,320
Después la sierra litar y después por allí la obtiene, pero la obtiene con la conexión cerrada.

140
00:07:17,440 --> 00:07:17,860
Veamos.

141
00:07:17,950 --> 00:07:18,790
Lo mejor es probarlo.

142
00:07:19,090 --> 00:07:20,230
Volvamos al ejemplo.

143
00:07:20,590 --> 00:07:21,730
Ejemplo JDBC.

144
00:07:22,330 --> 00:07:26,800
Recuerden, tengo comentado guardar a menos que queramos guardar un producto, crear un nuevo producto.

145
00:07:26,830 --> 00:07:32,140
Pero para el ejemplo lo mismo si queremos probar la conexión nada más con clic derecho run.

146
00:07:34,130 --> 00:07:41,090
Entonces hoy ejecutamos, de hecho acá arriba en configuraciones editar configuraciones se fijan que

147
00:07:41,090 --> 00:07:45,650
está con los ejemplos del otro proyecto del original que replicamos.

148
00:07:45,710 --> 00:07:49,070
Entonces vamos a editar configuraciones y esta la vamos a quitar.

149
00:07:49,280 --> 00:07:51,140
De hecho, vamos a quitar esta de acá.

150
00:07:52,460 --> 00:07:59,270
Con eso de esto OK, lo dejamos sin ninguna configuración, se fijan y ahora podemos ejecutar.

151
00:08:01,160 --> 00:08:05,600
Y ahora queda ejemplo JC El actual pero bien acaba listar se fijan.

152
00:08:05,690 --> 00:08:10,580
Lista bicicletas o negativity clado Corsair es corset a cambio de qué?

153
00:08:11,800 --> 00:08:18,640
En los otros ejemplos, pero es Corsair Teclado Aragón obtener por Heidy Nul porque se cerró la conexión,

154
00:08:18,640 --> 00:08:23,500
se fijan y acá dicen no se permiten operaciones después de haber cerrado la conexión.

155
00:08:24,450 --> 00:08:30,510
Entonces, claro, para evitar esto no tenemos que implementar el singleton acá, porque si no siempre

156
00:08:30,510 --> 00:08:33,900
va a devolver la misma instancia que ya está cerrada, que ya se cerró.

157
00:08:33,930 --> 00:08:39,660
Por ejemplo, en el método Listar recuerden que por ahí vuelve a pedir una conexión.

158
00:08:39,780 --> 00:08:43,620
Entonces acá tenemos que pedir una nueva conexión, no una conexión que está cerrada.

159
00:08:43,800 --> 00:08:48,420
Y por eso quería dejar esto al final para que vieran que el singleton funciona.

160
00:08:48,510 --> 00:08:53,850
Igualmente sigue funcionando, pero con una conexión que ya ha sido cerrada en el repositorio, en el

161
00:08:53,850 --> 00:08:54,240
distar.

162
00:08:54,450 --> 00:08:57,900
Entonces la solución sería eliminar esto Control X.

163
00:08:57,990 --> 00:09:01,580
Quitamos esto, quitamos esto acá también y listo.

164
00:09:02,090 --> 00:09:08,920
Esto lo seleccionamos, cortamos y seleccionamos y pegamos control.

165
00:09:10,110 --> 00:09:10,740
Y esta acá.

166
00:09:10,830 --> 00:09:12,360
Le quitamos esta línea.

167
00:09:12,570 --> 00:09:18,000
Simplemente devolvemos una conexión a la ACEA tocada que se invoca al que te instalas.

168
00:09:18,310 --> 00:09:21,120
Entonces ahí estaría bien si nos vamos al repositorio.

169
00:09:21,240 --> 00:09:27,090
Acá el Distar perfecto gaullistas crea una conexión y después la cierra.

170
00:09:27,210 --> 00:09:32,220
Después el porahí pide una conexión y después la sierra, pero pide una conexión nueva.

171
00:09:32,370 --> 00:09:33,150
Se fijan, no?

172
00:09:33,210 --> 00:09:35,310
Una conexión que ya estaba cerrada desde antes.

173
00:09:36,340 --> 00:09:42,610
Por eso acá no podemos implementar Singleton cuando queremos implementar una conexión por consulta u

174
00:09:42,610 --> 00:09:43,150
operación.

175
00:09:43,390 --> 00:09:44,230
Y eso sigue el cambio.

176
00:09:44,470 --> 00:09:45,610
Entonces, ahora sí que sí.

177
00:09:45,700 --> 00:09:46,540
Si nos vamos a ejemplo.

178
00:09:46,540 --> 00:09:53,410
JS Ejecutamos ahora que ya tenemos configurado todo acá Control Chig, F10.

179
00:09:55,830 --> 00:09:59,910
Ya no da error listar y obtener por.

180
00:10:01,020 --> 00:10:03,990
Obviamente insertar nos aplica porque lo dejamos comentado.

181
00:10:04,230 --> 00:10:09,620
Ahora, si queremos insertar no producto perfecto, lo comentamos pudiendo incluso colocar otro producto

182
00:10:09,900 --> 00:10:10,590
y va a funcionar.

183
00:10:12,490 --> 00:10:16,660
De hecho, acá en vez teclado Reiser podríamos colocar un producto, por ejemplo.

184
00:10:19,700 --> 00:10:26,390
Por ejemplo, Notebook Asus Rozz precio, no sé, dos mil o dos mil quinientos cincuenta está bien la

185
00:10:26,390 --> 00:10:30,410
fecha categoría computación, creo, sí, computación.

186
00:10:31,070 --> 00:10:34,010
Entonces ejecutamos contra el chip F10.

187
00:10:37,640 --> 00:10:44,300
Notebook azul, rojo computación está bien, funciona bien, pero ahora es una conexión por cada consulta

188
00:10:44,300 --> 00:10:47,510
operación, es decir, dentro del repositorio se abre y se cierra la conexión.

189
00:10:47,630 --> 00:10:48,170
Ya está bien.

190
00:10:48,290 --> 00:10:50,750
Si, porque utilizamos la conexión y la cerramos.

191
00:10:50,810 --> 00:10:53,450
Por lo tanto se consume recurso, después se cierra.

192
00:10:53,630 --> 00:10:58,830
Ahora, claro, si tenemos mucho concurrencia, una aplicación web con muchos usuarios conectados y

193
00:10:58,850 --> 00:11:01,220
estará abriendo y cerrando conexiones a cada rato.

194
00:11:01,280 --> 00:11:02,630
Podríamos tener un cuello botella.

195
00:11:02,670 --> 00:11:08,330
Entonces quizás hoy es mejor tener un pull de conexiones, por ejemplo 20 conexiones abierta un buen

196
00:11:08,330 --> 00:11:14,060
servidor y distribuir esas 20 conexiones a los distintos usuarios y quizás no 20 quizás pueden ser menos.

197
00:11:14,210 --> 00:11:14,840
Todo depende.

198
00:11:15,080 --> 00:11:16,370
Depende de cantidad, concurrencia.

199
00:11:16,460 --> 00:11:17,600
Va a funcionar mucho mejor.

200
00:11:17,690 --> 00:11:22,580
Por ahora quedamos hasta acá y continuamos en la siguiente clase con de conexiones.
