1
00:00:00,270 --> 00:00:00,750
Comencemos.

2
00:00:00,900 --> 00:00:07,440
Vamos a la clase con el main ejemplo Jcsé te requi de transacciones bien y acá lo primero que tenemos

3
00:00:07,440 --> 00:00:11,040
que implementar más arriba, por acá el manejo.

4
00:00:11,190 --> 00:00:18,150
Recuerden por defecto el auto commit es en Trum quiere decir que cada sentencia que se ejecuta automáticamente

5
00:00:18,240 --> 00:00:22,530
se refleja en la Cerrato automático por cada inser, por cada adblock.

6
00:00:22,590 --> 00:00:30,090
En realidad, por cada vez que ejecutamos el método execute dáte del statement o statement va a realizar

7
00:00:30,180 --> 00:00:33,320
esta operación y se va a llevar a cabo en la tabla.

8
00:00:33,510 --> 00:00:37,950
Pero la idea se creó manejar transacciones con un bloque de código tal como lo tenemos ahora con el

9
00:00:37,950 --> 00:00:39,920
insert acá con el arte.

10
00:00:40,020 --> 00:00:43,140
Un poco más abajo se fijan un conjunto de sentencias.

11
00:00:43,200 --> 00:00:49,840
Incluso tenemos consulta acá por Heidy litat acá después listar acá se fijan un grupo, un bloque de

12
00:00:49,860 --> 00:00:54,510
ver sentencia, pero todas dentro de una misma transacción, como una sola.

13
00:00:54,750 --> 00:00:58,230
Entonces acá tenemos que cambiar un poco, modificar el comportamiento por defecto.

14
00:00:58,290 --> 00:00:59,340
Entonces vamos a subir.

15
00:00:59,520 --> 00:01:08,550
Lo primero acá es cambiar acá conexión con punto set auto commit lo dejamos en fols.

16
00:01:09,660 --> 00:01:14,460
Recuerden que true por defecto bien, pero igual por seguridad es conveniente primero validar si es

17
00:01:14,460 --> 00:01:16,140
true, si es true, entonces lo cambiamos.

18
00:01:16,140 --> 00:01:17,980
Rafols Pero podría ser fols.

19
00:01:18,110 --> 00:01:21,340
Podría ser que en algún punto la aplicación lo hayamos cambiado fols.

20
00:01:21,660 --> 00:01:30,210
Entonces es conveniente preguntar con un if con punto, get autocomplete acá lo tenemos, se fijan?

21
00:01:30,420 --> 00:01:34,780
Y por acá any damos, bajamos y cerramos elif.

22
00:01:34,980 --> 00:01:37,440
Entonces dice Thru lo cambiamos a forzo y listo.

23
00:01:37,710 --> 00:01:38,490
Ahí está la conexión.

24
00:01:39,150 --> 00:01:44,700
Entonces la idea que después, al final, acá, al final de toda la sentencia de este grupo, realizar

25
00:01:44,700 --> 00:01:52,410
el ComitÃ, entonces con el con punto commit se fijan de forma manual explícita, de tal forma que si

26
00:01:52,410 --> 00:02:00,600
falla por ejemplo el editar pero se lleva a cabo el insert realiza un rollback acá en el catch implementamos

27
00:02:00,600 --> 00:02:03,240
el rollback y regresa al estado anterior.

28
00:02:03,300 --> 00:02:08,810
Por lo tanto el insert no se refleja y no se ejecuta en la tabla enlazado.

29
00:02:09,090 --> 00:02:15,030
En caso de que falle el editar o viceversa, si el insert falla, bueno, el editar tampoco se llevará

30
00:02:15,030 --> 00:02:15,300
a cabo.

31
00:02:15,420 --> 00:02:18,060
Incluso podemos tener mucho más operaciones entre medio.

32
00:02:18,180 --> 00:02:24,210
Recuerden, es todo o nada bien acá igualmente vamos a tener algún inconveniente porque estamos cerrando

33
00:02:24,210 --> 00:02:26,360
la conexión con el trade con recurso.

34
00:02:26,490 --> 00:02:28,320
Acá se cierra de forma automática.

35
00:02:28,950 --> 00:02:35,070
El problema es que se cierra acá dentro del try, pero en el catch la conexión va, está cerrada y ahí

36
00:02:35,070 --> 00:02:39,630
vamos a tener un pequeño problema, porque al estar cerrada no podemos hacer un rollback.

37
00:02:39,930 --> 00:02:41,580
Se fijan, no podemos volver atrás.

38
00:02:41,820 --> 00:02:43,670
Por qué está cerrada con el recurso?

39
00:02:43,710 --> 00:02:44,070
Pero.

40
00:02:44,070 --> 00:02:45,600
Pero lo podemos presentar de otra forma.

41
00:02:45,780 --> 00:02:48,300
Por ejemplo, tenemos un tris solamente para la conexión.

42
00:02:48,510 --> 00:02:52,020
Este de acá que finaliza acá y dentro.

43
00:02:52,080 --> 00:02:58,950
Vamos a tener otro try con un catch y ahí vamos a atrapar las opciones que tenemos acá en el repositorio.

44
00:03:00,330 --> 00:03:05,640
Acá tenemos repositorio que podría lanzar excepciones y acá tengo que hacer otro cambio, porque en

45
00:03:05,640 --> 00:03:12,570
cada método en eliminar, por ejemplo, pero más arriba tenemos guardar cada método maneja el try y

46
00:03:12,570 --> 00:03:12,990
el catch.

47
00:03:13,380 --> 00:03:18,770
Entonces acá lo que tenemos que hacer es quitar los catch, no realiza realizar manejo, excepción y

48
00:03:18,780 --> 00:03:24,390
esto llevarlo al main, a la clase con el método main y tener un solo catch para todo el conjunto de

49
00:03:24,450 --> 00:03:28,320
operaciones, para todo el conjunto de métodos y ahí realizar el rollback.

50
00:03:28,500 --> 00:03:32,470
Entonces esto acá lo vamos a quitar y vamos a lanzar la excepción por el método.

51
00:03:32,670 --> 00:03:37,040
Entonces ese otro paso que tenemos que implementar, pero había impactamos primero en orden, volvamos

52
00:03:37,050 --> 00:03:39,510
donde estábamos, ejemplo transacciones.

53
00:03:39,990 --> 00:03:43,230
Primero vamos a manejar el trae el catch anidado acá.

54
00:03:43,500 --> 00:03:46,740
Entonces por acá un try.

55
00:03:47,820 --> 00:03:48,540
Las llaves.

56
00:03:48,960 --> 00:03:51,300
Vamos a bajar hasta el final.

57
00:03:52,380 --> 00:03:53,910
Hasta acá y acá cerramos.

58
00:03:55,560 --> 00:04:03,210
Un catch SQL Septón Exception x Exception.

59
00:04:03,240 --> 00:04:03,930
Punto.

60
00:04:04,050 --> 00:04:10,260
Vamos a imprimir la traza print stack 3 perfecto y acá podemos hacer el rollback.

61
00:04:10,260 --> 00:04:15,300
Se fijan en este cacho con punto rollback.

62
00:04:16,170 --> 00:04:23,040
Entonces commit si falla un rollback se fijan y damos acá dentro del troi de la conexión.

63
00:04:24,820 --> 00:04:30,640
Incluso esto para qué mejor y más limpio lo podríamos quitar, o también lo podemos manejar tan bien

64
00:04:30,820 --> 00:04:31,540
como queramos.

65
00:04:31,780 --> 00:04:36,970
Pero cualquier error que ocurra, ya sea acá en el rollback, porque acá también nos pide manejar excepción.

66
00:04:37,960 --> 00:04:42,460
O error acá en el auto commit en el que te instalas en la conexión.

67
00:04:42,760 --> 00:04:49,960
Lo podríamos lanzar por el método, entonces podríamos agregar el catch o bien lanzar en el método main.

68
00:04:50,800 --> 00:04:51,880
Entonces más acciones.

69
00:04:53,590 --> 00:04:58,530
Agrega Exception era el método en la firma, el método y listo, queda mejor.

70
00:04:58,540 --> 00:04:59,230
Queda más limpia.

71
00:04:59,410 --> 00:05:05,080
Entonces acá tenemos el TRIE que anida todo de la conexión con el recurso trae un recurso.

72
00:05:05,600 --> 00:05:08,380
Luego modificamos el auto commit a fols.

73
00:05:08,620 --> 00:05:09,070
Trae.

74
00:05:10,140 --> 00:05:17,460
Tras ejecutar este bloque hace un subcomité y en caso de falla rollback, regresamos al estado que tenía

75
00:05:17,460 --> 00:05:18,480
antes original.

76
00:05:18,960 --> 00:05:23,370
Es decir, todos los cambios que se habían realizado, por ejemplo en el insert, vuelven atrás y no

77
00:05:23,430 --> 00:05:24,090
se realizan.

78
00:05:24,210 --> 00:05:28,800
Vimos recién que también tuve que modificar el producto repositorio acá.

79
00:05:29,100 --> 00:05:33,060
Quítalos catch claro, porque se lanza una excepción matear en este catch.

80
00:05:33,550 --> 00:05:36,970
Y la idea es que entre en el catch del método main.

81
00:05:37,560 --> 00:05:43,320
Acá en este caso para que realice el rollback, entonces sería el siguiente paso vamos a quitar todos.

82
00:05:43,560 --> 00:05:45,000
Va a lanzar un error y está bien.

83
00:05:45,390 --> 00:05:47,550
Entonces le agregamos más acciones.

84
00:05:48,900 --> 00:05:57,240
Que lo lance en el método OK le ponemos ñez se fijan frus ese escepción lo lanza en el método, después

85
00:05:57,240 --> 00:06:00,210
vamos a tener que modificar la interfaz.

86
00:06:00,660 --> 00:06:04,500
Bueno, ahí vamos a ver esto lo modificamos también eliminar.

87
00:06:05,990 --> 00:06:06,620
Lo mismo.

88
00:06:07,520 --> 00:06:08,480
Más acciones.

89
00:06:09,380 --> 00:06:15,290
Lanzar en la firma el método acá nos pregunta el método eliminar viene de una herencia, de una implementación

90
00:06:15,290 --> 00:06:19,100
de la interfaz, se fijan y acá nos pregunta si queremos agregar de forma automática.

91
00:06:19,100 --> 00:06:24,470
También en el método de la interfaz le ponemos que si, de hecho podríamos revisar si nos vamos a la

92
00:06:24,470 --> 00:06:32,690
interfaz repositorio repositorio se fijan en guardar aparece el frus ese cual exception y elimina también

93
00:06:32,990 --> 00:06:35,390
el por Heidy y el listar no lo tienen todavía.

94
00:06:35,630 --> 00:06:36,590
Eso lo vamos a ver ahora.

95
00:06:39,200 --> 00:06:43,630
Se fijan entonces acá también en por Heidi quitamos el catch.

96
00:06:44,120 --> 00:06:49,380
Lo mismo más acciones agregar en la firma del método OK.

97
00:06:50,250 --> 00:06:53,390
Si nos vamos a la interfaz agrego frus de cual es esto?

98
00:06:54,110 --> 00:06:54,800
Está perfecto.

99
00:06:55,280 --> 00:06:56,720
Y acá lo mismo quitamos el catch.

100
00:06:58,950 --> 00:06:59,880
Y lo agregamos.

101
00:07:02,010 --> 00:07:02,390
Ok.

102
00:07:03,840 --> 00:07:07,080
Ya tenemos todo nuestro repositorio, la interfaz también.

103
00:07:07,170 --> 00:07:11,640
Recuerden que los métodos de la interfaz tienen que ser idéntica, la firma a los métodos que estamos

104
00:07:11,640 --> 00:07:17,130
implementando acá, entonces son la misma firma, misma nombre, método, el protocolo de implementación.

105
00:07:17,340 --> 00:07:20,190
Y ahora sí que sí, ya tenemos listo el repositorio.

106
00:07:20,280 --> 00:07:25,410
Quitamos los catch, ya que lo vamos a implementar acá para el rollback electo.

107
00:07:26,470 --> 00:07:30,160
Ya tenemos todo implementado, ahora de otra forma el rollback.

108
00:07:30,610 --> 00:07:36,120
Entonces todo acá más bien son operaciones del tipo Inser Aztec o delito, es decir, sentencias de

109
00:07:36,130 --> 00:07:40,960
mele de data, manipulación languages más que de la consulta select.

110
00:07:41,410 --> 00:07:44,350
Y acá recuerden, se está cerrando la conexión de forma automática.

111
00:07:45,220 --> 00:07:49,030
Entonces siempre al finalizar estos bloque contrastación.

112
00:07:50,180 --> 00:07:56,690
Al final hacemos el comic, pero en caso de que se ejecuti bien o de que falle después de Cacho, al

113
00:07:56,690 --> 00:08:00,470
final se cierra la conexión por el TREC con recurso.

114
00:08:01,100 --> 00:08:04,110
Entonces por eso lo tengo que manejar de esta forma con un traje anidado.

115
00:08:04,280 --> 00:08:07,040
Cuando utilizamos un traje con recursos, ahora lo vamos a levantar.

116
00:08:07,100 --> 00:08:10,670
Entonces con control cheff, F10, ejecutamos.

117
00:08:10,970 --> 00:08:13,490
Recuerden, debiera lanzar algún error.

118
00:08:14,000 --> 00:08:14,510
Vamos a ver.

119
00:08:14,920 --> 00:08:15,890
Y debería ser un rollback.

120
00:08:17,220 --> 00:08:18,570
Se fijan acá tenemos el error.

121
00:08:19,470 --> 00:08:23,340
Acá se duplica la entrada a BCD un, dos, tres, cuatro, cinco, seis.

122
00:08:23,670 --> 00:08:24,270
Revisemos.

123
00:08:24,510 --> 00:08:29,310
Recuerden que el INSER está bien porque es a veces de E y ese no existe.

124
00:08:29,610 --> 00:08:34,260
Así que lo debiese insertar bien, pero como hace un rollback, en realidad no lo insertar.

125
00:08:35,330 --> 00:08:39,780
Y acá donde falla a veces de un, dos, tres, cuatro o cinco, seis, porque tenemos un producto que

126
00:08:39,780 --> 00:08:41,940
tiene es ese cabo está duplicado.

127
00:08:42,660 --> 00:08:47,450
Por eso se viola la integridad, el Constraint, una regla de rato.

128
00:08:48,390 --> 00:08:49,130
Revisemos la base.

129
00:08:50,010 --> 00:08:54,270
Bien, entonces en productos selecciona todos se fijan.

130
00:08:54,450 --> 00:08:57,360
No insertó nada entre mostrar productos 7.

131
00:08:57,780 --> 00:09:00,180
No hay un producto 8 para el rollback falló.

132
00:09:00,570 --> 00:09:04,110
Si estuviéramos con auto comisio, por ejemplo en Thru.

133
00:09:05,120 --> 00:09:07,970
Y no manejamos acá el CONMI ni tampoco el rollback.

134
00:09:08,150 --> 00:09:14,420
Bueno, por supuesto que se va a insertar este de acá, pero acá no se actualizado, pero acá todo o

135
00:09:14,420 --> 00:09:14,780
nada.

136
00:09:14,930 --> 00:09:17,870
Es decir, se ejecuta el bloque completo o ninguna sentencia.

137
00:09:18,200 --> 00:09:19,070
Vamos a modificar.

138
00:09:20,120 --> 00:09:23,360
Acabas de colocar a veces de E. F.

139
00:09:23,780 --> 00:09:28,700
Yo creo que acá también va tirar un error porque tenemos maddi de caracteres, se fijan 1, 2, 3,

140
00:09:28,730 --> 00:09:31,190
4, 5, 6, 7, 8, 9, 10.

141
00:09:31,340 --> 00:09:32,720
Claro, tengo más de dos caracteres.

142
00:09:33,110 --> 00:09:34,850
Si ejecutamos, vamos a ver.

143
00:09:37,620 --> 00:09:42,970
Las otro error data trum Ketcham, es decir, la información es demasiado larga para la columna.

144
00:09:43,350 --> 00:09:45,330
Recuerden que es hasta 10 caracteres.

145
00:09:45,460 --> 00:09:48,860
Entonces acá tenemos 3 6 y acá 4.

146
00:09:49,050 --> 00:09:49,910
Todo lo quitamos.

147
00:09:50,430 --> 00:09:53,250
Si tenemos 10, ahora, si el ejecutamos.

148
00:09:53,430 --> 00:09:55,410
Debería estar perfecto.

149
00:09:56,410 --> 00:09:59,490
Dailey inserta con el Heidy Dias, claro, por qué 10.

150
00:09:59,610 --> 00:10:01,080
Qué pasa con el 8 y el 9?

151
00:10:01,350 --> 00:10:03,600
Claro, ejecutamos 2 y las dos fallaron.

152
00:10:03,750 --> 00:10:09,030
Pero los productos se insertaron, pero después con el rollback volvimos atrás y se eliminan de forma

153
00:10:09,030 --> 00:10:11,050
automática, es decir, vuelve al estado original.

154
00:10:11,280 --> 00:10:14,370
Pero si se incrementa de forma automática los saidi llega.

155
00:10:14,370 --> 00:10:19,110
Tenemos teclado y BM mecánico con su propia llave.

156
00:10:19,890 --> 00:10:21,070
Iete se modificó.

157
00:10:21,420 --> 00:10:28,630
Entonces si revisamos el 5 teclado Corsair acá a veces de F 1 2 3 4 está perfecto.

158
00:10:28,860 --> 00:10:34,050
La siguiente clase vamos a ver muy parecido, muy similar, pero utilizando un puzzle, conexiones y

159
00:10:34,050 --> 00:10:34,950
una clase servis.

160
00:10:35,130 --> 00:10:38,760
Aunque también lo podemos implementar en el método Main, tal como lo hicimos.

161
00:10:38,790 --> 00:10:45,780
Pero tipicamente y como buena práctica, se recomienda trabajar con una clase de servicio para desacoplar

162
00:10:45,810 --> 00:10:51,540
todo lo que esta lógica de negocio de la clase o del controlador de la clase con el método main.

163
00:10:51,750 --> 00:10:57,450
Después vamos a ver, por ejemplo en una aplicación web vamos a tener un MBC modelo vista controlador

164
00:10:57,540 --> 00:10:58,500
se presente capa.

165
00:10:58,590 --> 00:11:05,070
El controlador se encarga todo lo que es manejar el request o solicitud HTTP y la respuesta hacia el

166
00:11:05,070 --> 00:11:05,880
usuario se fijan.

167
00:11:05,910 --> 00:11:09,990
El usuario envía datos, pero también estos datos se procesan en la lógica de negocio.

168
00:11:10,110 --> 00:11:13,380
Se lo pasamos a la lógica negocio, al service, al repositorio.

169
00:11:13,530 --> 00:11:19,590
No entrega el resultado y se lo pasamos de vuelta al usuario a través de la vista de un HTML o un Jaison

170
00:11:19,710 --> 00:11:25,770
o cualquier representación, pero siempre se tiene que desacoplar todo lo que datos lógica negocio de

171
00:11:25,770 --> 00:11:29,250
la clase controladora o en este caso del método main.

172
00:11:29,370 --> 00:11:34,410
Entonces por eso mejor implementar un service y no tener todo esto de acá.

173
00:11:34,830 --> 00:11:43,020
Por ejemplo en el main y implementar métodos en un service que agrupan varias sentencias, varias operaciones,

174
00:11:43,020 --> 00:11:44,880
consultas en una misma transacción.

175
00:11:45,030 --> 00:11:45,550
Nada más.

176
00:11:45,570 --> 00:11:47,490
Continuamos en la siguiente clase.
