1
00:00:00,270 --> 00:00:01,770
Continuamos con la clase Cerve.

2
00:00:01,890 --> 00:00:03,000
Bueno, pero de qué se trata?

3
00:00:03,150 --> 00:00:08,040
En la clase anterior habíamos trabajado con repositorio en nuestra clase main y todo mezclado, toda

4
00:00:08,040 --> 00:00:12,180
la lógica negocio, todos los datos acoplado a nuestra clase cliente o principal.

5
00:00:12,270 --> 00:00:16,740
Otra forma, trabaja con un service y desacoplar todo lo que es lógica negocio, todo lo que son los

6
00:00:16,740 --> 00:00:23,610
datos manejo de repositorio a una clase separada de tal forma dar como una fachada una puerta de entrada.

7
00:00:23,760 --> 00:00:30,240
Actúa nuestra lógica negocio implementando este patrón diseño nuestra clase servis como una capa negocio,

8
00:00:30,360 --> 00:00:36,650
pero no solamente le permite desacoplar, sino también se le conoce como un repositorio manager o dao

9
00:00:36,660 --> 00:00:42,690
manager, donde podemos tener varios objetos o instancias atributos de distintos repositorio y estos

10
00:00:42,690 --> 00:00:44,400
pueden interactuar unos con otros.

11
00:00:44,610 --> 00:00:50,880
Pueden ser repositorio o clase de acceso a dato, los daos y todos trabajar en conjunto bajo una misma

12
00:00:50,880 --> 00:00:53,280
transacción con diferentes tabla en la Ayato.

13
00:00:53,360 --> 00:00:59,760
Bueno, lo mismo que hemos estado trabajando de forma acoplada en el main, pero acá de una forma mucho

14
00:00:59,760 --> 00:01:01,260
más ordenada en un método.

15
00:01:01,380 --> 00:01:07,530
Y este método bueno, cada método al ser que se encarga de traja con un bloque de sentencias, maneja

16
00:01:07,530 --> 00:01:12,270
transacciones con uno o varios repositorio trabajando en conjunto.

17
00:01:12,480 --> 00:01:13,020
Esa es la idea.

18
00:01:13,230 --> 00:01:18,780
Ese es el principio de una clase servis prestar un servicio de lógica negocio.

19
00:01:18,970 --> 00:01:19,590
Bien, comencemos.

20
00:01:19,590 --> 00:01:22,160
Primero vamos a crear nuestra clase service.

21
00:01:22,290 --> 00:01:24,810
Entonces bajamos por acá, pero antes.

22
00:01:24,840 --> 00:01:29,040
Bueno, un РАМКАХ como siempre con add insert por acá un package.

23
00:01:29,520 --> 00:01:32,190
Le vamos a llamar servicio o service como quieran.

24
00:01:32,190 --> 00:01:33,990
Si lo tienen en inglé ningún problema.

25
00:01:35,750 --> 00:01:40,020
Y acá mismo en servicio vamos a crear una interfaz.

26
00:01:40,200 --> 00:01:45,570
Entonces nueva clase, seleccionamos interfaz, le vamos a llamar servicio también o service.

27
00:01:47,820 --> 00:01:54,630
Perfecto, entonces dentro del pack servicio, la interfaz servicio y comenzamos con los métodos, típicamente

28
00:01:54,630 --> 00:01:58,650
son los mismos métodos como base que tiene el repositorio.

29
00:01:58,950 --> 00:02:04,350
Claro, porque eventualmente podríamos trabajar con los métodos del repositorio y el servis.

30
00:02:04,440 --> 00:02:10,140
Recuerden, es una fachada para acceder a estos repositorio de forma individual o como he explicado,

31
00:02:10,140 --> 00:02:15,060
también métodos que interactúan varios repositorio bajo un mismo bloque de transacción.

32
00:02:15,450 --> 00:02:17,400
Qué métodos tenemos en el repositorio?

33
00:02:17,400 --> 00:02:18,360
Por ejemplo, producto?

34
00:02:18,630 --> 00:02:27,120
Vamos a devolver primero un list del tipo producto, pero vamos a importar list@ de ya útil como siempre.

35
00:02:27,330 --> 00:02:33,090
Luego del tipo bruto método liter perfecto.

36
00:02:33,240 --> 00:02:43,230
Otro método que tenemos del repositorio es por Heidy que devuelve un producto por Heidy lo Heidy perfecto

37
00:02:43,590 --> 00:02:52,170
bajamos guardar también devuelve un producto y pasamos un producto que queremos guardar o modificar.

38
00:02:55,590 --> 00:02:56,880
Y por último, eliminar.

39
00:02:59,130 --> 00:02:59,700
Eliminar.

40
00:03:02,400 --> 00:03:04,680
Log Heidi perfecto.

41
00:03:05,550 --> 00:03:06,000
Qué más?

42
00:03:06,960 --> 00:03:12,990
Otro más Veidt indica tenemos el método de transacción, el más importante, el que guarda el producto

43
00:03:13,080 --> 00:03:14,340
junto con su categoría.

44
00:03:14,400 --> 00:03:20,650
Primero creamos la categoría, le insertamos, devuelve el objeto categoría con el Heidy, luego creamos

45
00:03:20,650 --> 00:03:22,290
el producto con esa categoría.

46
00:03:22,560 --> 00:03:27,960
Entonces es básicamente llevar todo lo que tenemos en el método main de nuestra clase cliente.

47
00:03:28,200 --> 00:03:35,340
A este método del servicio que transaccional y aparte interactúa con nuestra lógica negocio, con los

48
00:03:35,340 --> 00:03:39,990
repositorios, con los dos, le pudiéramos llamar guardar producto con categoría.

49
00:03:41,610 --> 00:03:45,690
Se guarda el producto con categoría.

50
00:03:48,510 --> 00:03:51,780
Vamos a pasar el producto y la categoría.

51
00:03:54,400 --> 00:03:56,250
Categoría de la categoría.

52
00:03:56,310 --> 00:03:58,290
Vamos a importar al enter.

53
00:03:58,470 --> 00:03:59,010
Perfecto.

54
00:04:00,180 --> 00:04:00,810
Punto y coma.

55
00:04:01,200 --> 00:04:03,510
Solamente faltaría lanzamiento escepción.

56
00:04:03,750 --> 00:04:13,700
Entonces, por ejemplo, en el método litat por acá vamos a colocar throws SQL escepción SQL Exception.

57
00:04:14,040 --> 00:04:14,730
Ahí lo tenemos.

58
00:04:15,060 --> 00:04:20,220
Y lo mismo vamos a copiar esto acá por cada método.

59
00:04:20,320 --> 00:04:24,060
Entonces lo copiamos, bajamos y lo pegamos.

60
00:04:32,220 --> 00:04:38,070
Claro, porque esta acepción va a devolver nuestro repositorio y lo vamos a manejar con el trade, conectate

61
00:04:38,330 --> 00:04:43,830
en los metros servis, pero no en todos los métodos, solamente en los métodos que vamos a manejar transacciones

62
00:04:44,010 --> 00:04:47,550
en el guardar, eliminar, guardar producto con la categoría.

63
00:04:47,610 --> 00:04:51,930
Pero por ejemplo en listar en por Heidy son métodos quien realiza consulta.

64
00:04:51,940 --> 00:04:55,960
No es necesario tener que manejar transacciones con el comic con el rollback.

65
00:04:56,220 --> 00:05:01,050
Entonces en ese caso, si llega a ocurrir un error, simplemente lo lanzamos en el método.

66
00:05:01,260 --> 00:05:06,780
Ahora, si estamos en un método que modifica algún registro de la tabla, ya sea para eliminar, para

67
00:05:06,780 --> 00:05:08,430
crear, para editar.

68
00:05:08,670 --> 00:05:10,080
Bueno, manejamos trait catch.

69
00:05:10,290 --> 00:05:16,020
Si se lanza un excepción del repositorio, bueno, hacemos un rollback y si todo sale bien hacemos un

70
00:05:16,020 --> 00:05:16,410
ComitÃ.

71
00:05:16,830 --> 00:05:20,100
Bien podríamos tener casi lista nuestra clase servicio.

72
00:05:20,160 --> 00:05:22,170
Ahora opcionalmente lo vamos a ver.

73
00:05:22,170 --> 00:05:27,990
Ahora podríamos tener más métodos porque solamente tenemos lo del producto y esto sería un servicio

74
00:05:28,020 --> 00:05:32,340
que podría estar orientado, enfocado tanto producto como categoría.

75
00:05:32,430 --> 00:05:37,920
Es decir, como categoría de producto son dos tabla que está muy relacionada mediante una Franki.

76
00:05:38,220 --> 00:05:44,480
Entonces podríamos tener una clase servicio en común para ambos, ya que acá se manejan ambos repositorio.

77
00:05:44,790 --> 00:05:50,490
Entonces también podríamos tener un listar para categoría un por Heidy para categoría Aguardad categoría

78
00:05:50,500 --> 00:05:54,970
Eliminar categorías y fijan el domingo un método de producto, pero también para categoría porque no

79
00:05:54,970 --> 00:05:58,050
es necesario tener una clase servicio por cada tabla.

80
00:05:58,140 --> 00:06:05,580
No solamente podríamos tener una clase service de servicio y dentro manejarlo repositorio o todos los

81
00:06:05,580 --> 00:06:07,320
repositorio que estén relacionados.

82
00:06:07,650 --> 00:06:12,210
Ahora, claro, si tenemos dos tabla que no tienen ninguna relación, no tiene mucho sentido que formen

83
00:06:12,210 --> 00:06:13,470
parte del mismo servicio.

84
00:06:14,010 --> 00:06:17,400
Entonces dictar categoría.

85
00:06:20,520 --> 00:06:21,900
Listar categoría.

86
00:06:29,430 --> 00:06:38,280
Categoría Guardar categoría para que sea distinto guardar se fijan litar categoría Guardar categoría

87
00:06:39,450 --> 00:06:44,070
Bajamos portería por Heidy acá devuelve también categoría.

88
00:06:49,820 --> 00:06:54,200
Por endi categoría loc@ hoy día.

89
00:06:55,950 --> 00:06:56,640
Bajamos.

90
00:06:58,200 --> 00:06:59,070
Bajamos.

91
00:06:59,400 --> 00:07:00,770
Portaría eliminar voy

92
00:07:03,370 --> 00:07:04,090
eliminar.

93
00:07:04,470 --> 00:07:05,190
Categoría.

94
00:07:09,380 --> 00:07:09,850
Y listo.

95
00:07:10,060 --> 00:07:12,640
Ahí tenemos el repositorio completo, faltaría los drows.

96
00:07:12,850 --> 00:07:17,890
Así que vamos a copiar acá y lo pegamos también en cada uno en categoría.

97
00:07:21,370 --> 00:07:22,480
Él está bien.

98
00:07:22,630 --> 00:07:27,190
El siguiente paso es crear la clase servicio implemente que implementa la interfaz.

99
00:07:27,790 --> 00:07:30,340
Entonces nos vamos a ca. alpacas, al insert.

100
00:07:30,610 --> 00:07:31,630
Vamos a crear la clase.

101
00:07:31,810 --> 00:07:37,120
Le podríamos llamar producto, servicio o catálogo servicio, claro, porque como tenemos producto y

102
00:07:37,120 --> 00:07:45,130
categoría y forma parte de este catálogo producto podría ser catálogo entonces catálogo, servicio,

103
00:07:47,650 --> 00:07:49,510
implementos, servicio.

104
00:07:50,740 --> 00:07:55,300
Y acá con Alt Enter implementamos los métodos de la interfaz.

105
00:07:55,330 --> 00:07:55,840
Todos.

106
00:07:56,200 --> 00:08:01,300
Todo lo relacionado producto a categoría y el método tener en común guardar productos con categoría.

107
00:08:02,080 --> 00:08:07,150
Recuerden entonces una clase de servicio que presta una funcionalidad lógica.

108
00:08:07,150 --> 00:08:13,540
Negocio desacoplar todo lo que sean datos de los controladores de nuestra clase cliente como en el caso

109
00:08:13,540 --> 00:08:19,840
del método Main y también manejar transacciones dentro estos métodos y dentro pudrirme interactuar con

110
00:08:19,840 --> 00:08:20,800
más de un repositorio.

111
00:08:21,220 --> 00:08:24,850
Por lo tanto, los atributos de esta clase van a ser los repositorio.

112
00:08:25,510 --> 00:08:28,030
El siguiente paso es definir los atributos.

113
00:08:28,570 --> 00:08:35,890
Entonces vamos a crear un par de atributos private del tipo repositorio.

114
00:08:36,610 --> 00:08:46,970
Entonces el repositorio de producto le vamos a llamar producto repositorio producto repositorio perfecto.

115
00:08:47,110 --> 00:08:47,920
Este es el primero.

116
00:08:49,540 --> 00:08:54,880
El segundo privat lo mismo, pero para categoría.

117
00:08:58,110 --> 00:08:59,250
Categoría Repositorio.

118
00:09:00,960 --> 00:09:05,980
Bien, vamos a tener un constructor constructor, pero vacío.

119
00:09:06,090 --> 00:09:08,310
Y acá vamos a inicializar los datos.

120
00:09:08,430 --> 00:09:12,020
Entonces seleccionar non nada un constructor.

121
00:09:12,600 --> 00:09:24,420
Bajamos diez punto producto repositorio igual new producto repositorio y acá nos pide pasar la conexión.

122
00:09:24,510 --> 00:09:26,130
Pero obviamente acá no la tenemos.

123
00:09:26,340 --> 00:09:31,890
Entonces tenemos que crear un constructor vacío en los repositorio para que no nos dé error, para que

124
00:09:31,890 --> 00:09:33,840
no nos marque error con la conexión.

125
00:09:34,320 --> 00:09:35,010
Punto y coma.

126
00:09:35,640 --> 00:09:37,530
Lo mismo con Tiz.

127
00:09:37,770 --> 00:09:39,570
Categoría Repositorio.

128
00:09:47,870 --> 00:09:53,810
Perfecto, lo siguiente nos vamos a la clase, partimos primero en producto, implemento, control B

129
00:09:54,320 --> 00:10:02,000
y acá vamos a crear un nuevo constructor vacío al insert, constructor vacío.

130
00:10:04,460 --> 00:10:12,260
Y lo mismo categoría regresamos a catálogo servis se fijan, hay namarca, error, control V llega lo

131
00:10:12,260 --> 00:10:15,230
mismo al insecto constructor vacío.

132
00:10:17,060 --> 00:10:21,140
Pero de alguna forma tenemos que pasar la conexión, ya que no la vamos a pasar por constructor, la

133
00:10:21,140 --> 00:10:22,650
tenemos que pasar vía método Set.

134
00:10:23,120 --> 00:10:28,230
Entonces debajo por acá lo mismo al insert, pero método set.

135
00:10:30,080 --> 00:10:31,640
Y vamos a pasar la conexión.

136
00:10:31,970 --> 00:10:36,680
Y esto mismo lo copiamos y lo pegamos en el otro repositorio en producto.

137
00:10:36,920 --> 00:10:38,540
Bueno, lo podemos copiar o lo podemos generar.

138
00:10:38,750 --> 00:10:42,980
Así que volvemos a pro-ducto porque estamos en categoría.

139
00:10:43,550 --> 00:10:48,860
Bajamos al insecto setter de la conexión solamente el 0.

140
00:10:50,140 --> 00:10:56,560
Bien, y me tengo que definir este método Set Connection Set con tal o cual mismo nombre en la interfaz

141
00:10:56,590 --> 00:10:57,250
repositorio.

142
00:10:57,670 --> 00:11:05,950
Entonces vamos a seleccionar el vey set con todo acá lo copiamos, nos vamos al interfaz repositorio,

143
00:11:06,340 --> 00:11:07,330
lo tenemos acá abajo.

144
00:11:08,110 --> 00:11:09,730
Bajamos, lo pegamos.

145
00:11:10,150 --> 00:11:10,720
Punto y coma.

146
00:11:11,050 --> 00:11:12,990
Es decir, agregamos un método set.

147
00:11:13,570 --> 00:11:14,170
Para qué?

148
00:11:14,470 --> 00:11:18,490
Como el tipo de los repositorio en la clase servis del tipo de la interfaz.

149
00:11:19,060 --> 00:11:23,490
Si nos vamos acá a catalogos servicio el tipo de repositorio de la interfaz.

150
00:11:23,740 --> 00:11:30,370
Entonces para poder acceder al método de la conexión al método set y así asignar la conexión, necesitamos

151
00:11:30,370 --> 00:11:35,160
que esté disponible no solamente en la clase que implementa la interfaz repositorio, sino también en

152
00:11:35,170 --> 00:11:36,210
la interfaz misma.

153
00:11:37,360 --> 00:11:40,180
Si no, no vamos a poder asignar la conexión.

154
00:11:40,440 --> 00:11:45,880
Bueno, y luego en listar por Heidy, guardar, conectarnos, ir a buscar en cada método, id a buscar

155
00:11:45,880 --> 00:11:49,750
una conexión al pull de conexiones y se lo asignamos vía método set.

156
00:11:50,050 --> 00:11:52,510
Veamos como por acá bajamos.

157
00:11:52,870 --> 00:11:55,750
Lo hemos visto, pero con un troi con recurso.

158
00:11:55,960 --> 00:12:07,810
El objeto conexión con igual nuestra clase conexión conexión base datos punto get con echo cerramos

159
00:12:07,900 --> 00:12:10,690
el trie por ejemplo esta litas de producto.

160
00:12:10,780 --> 00:12:18,920
Entonces vamos a utilizar el producto repositorio producto repositorio punto Set Connection y pasamos

161
00:12:18,920 --> 00:12:19,510
a la conexión.

162
00:12:20,020 --> 00:12:23,590
Así asignamos y podemos realizar la consulta o la operación.

163
00:12:23,890 --> 00:12:27,940
Y esto mismo te trae, tiene que ir en cada método.

164
00:12:28,270 --> 00:12:34,070
Entonces vamos a copiar en cada método de relacionado a producto, productos, repositorio.

165
00:12:34,990 --> 00:12:35,980
Entonces acá también.

166
00:12:37,630 --> 00:12:38,500
Acá también.

167
00:12:39,590 --> 00:12:40,430
Elimina también.

168
00:12:42,420 --> 00:12:43,320
Y en categoría no?

169
00:12:43,710 --> 00:12:44,820
Bueno, sería similar.

170
00:12:45,030 --> 00:12:52,170
De hecho, vamos a copiar, pero en vez de producto sería categoría, categoría repositorio.

171
00:12:53,670 --> 00:13:02,670
Y lo mismo los seleccionamos Control C y vamos pegando por Heidy Categoría.

172
00:13:03,680 --> 00:13:04,850
Guardar categoría.

173
00:13:07,210 --> 00:13:13,380
Eliminar, ya que hoy día ambos, tanto categoría repositorio como producto, entonces agregamos acá

174
00:13:13,400 --> 00:13:21,790
producto porque son dos repositorio que interactúan productos repositorio punto set connection y pasamos

175
00:13:21,790 --> 00:13:28,690
la conexión electo y lo dejamos así por ahora y continuamos en la siguiente clase implementando cada

176
00:13:28,690 --> 00:13:29,480
uno de estos métodos.

177
00:13:30,040 --> 00:13:35,240
Pero recuerden cada método que modifica la tabla Guardar productos con categoría elimina categoría.

178
00:13:35,240 --> 00:13:36,280
Aguardad categoría.

179
00:13:36,850 --> 00:13:42,670
Después tenemos eliminar producto, guardar producto por Heidy producto por ahí no porque consulta,

180
00:13:42,700 --> 00:13:48,970
pero otro método que modifican sería con transacción con el trait catch anidado dentro de la conexión.

181
00:13:49,010 --> 00:13:53,590
Bueno, tal como lo vimos en la clase con el método main, además tenemos que modificar el auto commit

182
00:13:53,650 --> 00:13:54,370
en fols.

183
00:13:54,520 --> 00:13:55,570
Realizar el commit.

184
00:13:55,750 --> 00:13:57,660
Después el rollback se fijan y así.

185
00:13:57,850 --> 00:13:59,260
Pero eso lo dejamos para la siguiente clase.

186
00:13:59,530 --> 00:14:00,190
Nos vemos.
