1
00:00:00,210 --> 00:00:03,720
Vamos a comenzar creando la clase de acceso a datos o repository.

2
00:00:03,960 --> 00:00:09,860
Básicamente su función es justamente acceder realiza consulta y operaciones en la base datos.

3
00:00:09,990 --> 00:00:14,940
Eso es todo lo que hace una clase daho o de acceso a dato o repositorio.

4
00:00:15,180 --> 00:00:16,530
El nombre que le queramos llamar.

5
00:00:16,680 --> 00:00:23,040
Y luego vamos a crear la clase servis que en el fondo puede contener a las clases dado y dentro es un

6
00:00:23,040 --> 00:00:23,760
método.

7
00:00:23,850 --> 00:00:31,170
Podrían colaborar o interactuar diferentes dado que realiza consulta a diferentes tabla y todo bajo

8
00:00:31,260 --> 00:00:32,310
una misma transacción.

9
00:00:32,400 --> 00:00:37,690
Este método se envuelve en una sola transacción y pueden trabajar juntos diferentes dado.

10
00:00:37,800 --> 00:00:38,730
Y esa es la gracia.

11
00:00:38,820 --> 00:00:45,120
Y la idea del servis es evitar ensuciar el controlador con la clase dado de forma directa.

12
00:00:45,150 --> 00:00:48,210
Simplemente se acopla y se lleva a una fachada.

13
00:00:48,300 --> 00:00:50,970
Justamente lo que vamos a trabajar en esta clase.

14
00:00:51,330 --> 00:00:56,490
Vamos a comenzar entonces con crear el package para los daho.

15
00:00:56,580 --> 00:00:58,430
Entonces sería Models dado.

16
00:00:58,620 --> 00:01:03,460
No paramos en el package raíz con click derecho New Package.

17
00:01:04,320 --> 00:01:07,470
Con un punto agregamos models.

18
00:01:07,650 --> 00:01:08,250
Punto da.

19
00:01:10,000 --> 00:01:16,180
Bien, hay diferentes forma de implementar un dado, podemos crear una clase, podemos trabajar directamente

20
00:01:16,180 --> 00:01:22,480
con el Entity Manager, con JPA, implementar todo de forma manual, pero Spring tiene un componente

21
00:01:22,630 --> 00:01:31,150
bastante potente, robusto, que se llama Spring Data JPA y esto nos ahorra un montón de trabajo de

22
00:01:31,150 --> 00:01:36,400
tener que estar implementando estos métodos y la consultas de Internet de JPA de forma manual.

23
00:01:36,490 --> 00:01:42,760
Simplemente se implementa una interfaz heredamos de la interfaz CRUD Repository y prácticamente estamos

24
00:01:42,760 --> 00:01:43,510
listos ya.

25
00:01:43,510 --> 00:01:49,420
Trae todos los métodos básicos para un cruz, para un CRUD, para poder listar, para buscar por Heidy,

26
00:01:49,450 --> 00:01:52,720
para modificar, para guardar y para eliminar.

27
00:01:52,960 --> 00:01:56,500
Y además, si queremos podemos implementar nuestros propios métodos.

28
00:01:56,530 --> 00:01:57,190
Customizado.

29
00:01:57,490 --> 00:02:04,630
Usando la anotación query o también utilizando el nombre del método, cosa que vamos a ver un poco en

30
00:02:04,630 --> 00:02:09,580
esta clase, pero vamos a implementar primero la interfaz Dawa, entonces con un clic derecho en el

31
00:02:09,580 --> 00:02:19,630
package Models Daho y nos vamos a Interfax y le damos el nombre y cliente al finalizar.

32
00:02:21,210 --> 00:02:24,090
Simplemente una interfaz que no tiene implementación.

33
00:02:25,440 --> 00:02:30,570
Y acá vamos a extender de CRUD repositorio.

34
00:02:31,880 --> 00:02:34,940
ÂQuÃ propone un Generic tipo genérico?

35
00:02:35,030 --> 00:02:41,570
Acá tenemos el nombre de la clase Entity que está asociado a este daho, a este repositorio sería cliente,

36
00:02:42,230 --> 00:02:43,010
la importamos.

37
00:02:43,040 --> 00:02:46,580
Justamente la clase que creamos el video anterior de cacería.

38
00:02:46,670 --> 00:02:52,970
El tipo de dato de la llave Heidy Lonko y hoy tenemos implementado nuestro dado de acceso a datos y

39
00:02:52,970 --> 00:02:56,480
acá mismo se hacemos por ejemplo con control click.

40
00:02:57,800 --> 00:03:00,560
Nos vamos al detalle, a los métodos de esta interfaz.

41
00:03:01,120 --> 00:03:07,140
Entonces, interfaz para generar operaciones CRUD genéricas de un repository, de una clase de acceso

42
00:03:07,140 --> 00:03:07,430
a datos.

43
00:03:07,640 --> 00:03:11,990
Acá tenemos el método Seif, que recibe un genérico de una entidad.

44
00:03:12,110 --> 00:03:14,750
Acá tenemos guardar varias entidades.

45
00:03:14,930 --> 00:03:17,960
Buscar por Heidy retorna un optional.

46
00:03:18,170 --> 00:03:23,450
Un optional es una clase, un tipo de dato que nos permite manejar mejor el resultado.

47
00:03:23,510 --> 00:03:27,710
Por ejemplo, si se realizó bien la consulta, va a retornar el objeto con quiete.

48
00:03:27,800 --> 00:03:32,990
Si no podemos manejar el error con manejo, decepción o bien retornar null.

49
00:03:33,110 --> 00:03:34,730
En fin, hay distintas alternativas.

50
00:03:35,120 --> 00:03:35,960
Luego tenemos.

51
00:03:36,350 --> 00:03:39,680
Si existe por Heidy para comprobar buscar todas.

52
00:03:39,710 --> 00:03:44,090
Find old retornaban integrable el interfaz de colección.

53
00:03:44,390 --> 00:03:51,200
En fin, hay un montón de cosas count eliminar por ahí, eliminar por un objeto, entidad y varios métodos

54
00:03:51,200 --> 00:03:51,460
más.

55
00:03:51,850 --> 00:03:59,840
Entonces es una interfaz bien interesante que nos propone Spring Data JPA Incluso podríamos revisar

56
00:03:59,930 --> 00:04:05,330
la documentación, la página Proyect Spring y Spring Data JPA.

57
00:04:05,480 --> 00:04:08,870
Nos vamos acá a referencia documentación.

58
00:04:09,820 --> 00:04:16,210
Y acá tenemos concepto del core, la trama, la interfaz repository, tal como la vimos y está interesante

59
00:04:16,210 --> 00:04:21,220
porque va a realizar las consultas y operaciones de acuerdo al nombre método.

60
00:04:21,250 --> 00:04:25,150
Si tenemos el nombre, se va a realizar un persiste en JPA.

61
00:04:25,270 --> 00:04:27,070
Por lo tanto va a hacer un insert a la base.

62
00:04:27,340 --> 00:04:28,480
Si hacemos un fï.

63
00:04:28,570 --> 00:04:33,880
Por Heidy va a realizar una consulta SELLECK a la clase Entity.

64
00:04:34,030 --> 00:04:38,890
En nuestro caso Cliente Huer, el atributo Heidy sea igual al parámetro.

65
00:04:39,100 --> 00:04:45,700
Entonces de acuerdo al nombre, el método va a realizar la consulta incluso más arriba en la documentación

66
00:04:47,080 --> 00:04:52,150
por acá tenemos definiendo query método definiendo un método query.

67
00:04:52,310 --> 00:04:57,100
Entonces a través del nombre método acá podemos realizar consulta en la interfaz.

68
00:04:57,130 --> 00:05:00,840
Podemos implementar método personalizado por ejemplo con find para hacer un select.

69
00:05:01,330 --> 00:05:05,350
Voy es para wear y aunt es para el where and.

70
00:05:05,500 --> 00:05:07,150
Entonces sería Select.

71
00:05:07,330 --> 00:05:14,380
La clase Entity Huer email address igual a este parámetro and last name es igual a este parámetro.

72
00:05:14,500 --> 00:05:17,020
Y así también tenemos para el distintivo.

73
00:05:17,260 --> 00:05:22,480
En fin, acá podemos buscar y realizar consulta de acuerdo al nombre del método.

74
00:05:22,900 --> 00:05:28,320
Y también tenemos por ejemplo operadores tales como el between, por ejemplo.

75
00:05:28,420 --> 00:05:34,990
Esto operadores se pueden utilizar en el nombre método left lan menor que grai dan mayor que like un

76
00:05:34,990 --> 00:05:35,860
huer like.

77
00:05:36,220 --> 00:05:43,750
Otra alternativa aparte de realizar consulta a través del nombre método, podemos utilizar una anotación

78
00:05:43,870 --> 00:05:50,410
la anotación query si nos vamos a JPA repositorios usando query la anotación query también podemos tener

79
00:05:50,440 --> 00:05:56,950
un método con algún nombre que le queremos dar y lo anotamos con Query y acá colocamos la consulta de

80
00:05:56,950 --> 00:05:58,480
JPA o Hibernate.

81
00:05:58,570 --> 00:06:05,470
Recordemos que esta consulta son h uele es el de internet query language orientado a objetos no son

82
00:06:05,470 --> 00:06:06,070
de tablas.

83
00:06:07,170 --> 00:06:14,550
Y acá pasamos un parámetro, un nombre parámetro con el signo pregunta y el índice, que sería el primer

84
00:06:14,550 --> 00:06:15,150
parámetro.

85
00:06:15,270 --> 00:06:16,590
Y acá lo pasamos por argumento.

86
00:06:16,650 --> 00:06:23,010
Entonces internamente va a pasar el valor del email adres de este argumento al Kouhei.

87
00:06:24,590 --> 00:06:30,140
Bien, entonces, volviendo al cliente dado, ya contamos con los métodos que lo estamos heredando,

88
00:06:30,230 --> 00:06:31,580
los métodos para el CRUD.

89
00:06:31,670 --> 00:06:39,500
Por lo tanto, tenemos implementado nuestro dado prácticamente de forma automática utilizando CRUD Repository.

90
00:06:40,100 --> 00:06:43,100
El siguiente paso es crear la clase Servis.

91
00:06:43,340 --> 00:06:49,310
Entonces vamos a crear un nuevo package Models Punto Servicies.

92
00:06:51,050 --> 00:06:56,150
Vamos a finalizar y en Servicies vamos a crear una interfaz

93
00:06:59,040 --> 00:07:01,280
y cliente servis.

94
00:07:02,660 --> 00:07:06,020
Y esta interfaz le vamos a dar un contrato de implementación.

95
00:07:06,110 --> 00:07:12,440
Los métodos del club, por ejemplo, para evitar para Buqué por ahí guardar, editar y eliminar.

96
00:07:12,590 --> 00:07:14,180
Vamos primero con el fin al

97
00:07:17,210 --> 00:07:17,930
cliente.

98
00:07:20,460 --> 00:07:23,610
Find all importamos list de Java útil.

99
00:07:24,780 --> 00:07:32,940
Importamos cliente y por ahora vamos a dejar solamente implementado el final y después vamos a ir implementando

100
00:07:33,030 --> 00:07:36,210
lo demás métodos del service para realizar el cruce.

101
00:07:36,870 --> 00:07:41,040
Entonces ahora vamos a crear la clase servis y vamos a implementar este método.

102
00:07:41,280 --> 00:07:43,590
Vamos a crear entonces la clase SERVIS.

103
00:07:46,630 --> 00:07:51,580
Clientes servis, implemento de implementación, le ponemos imple.

104
00:07:52,870 --> 00:07:55,350
Finalizar Entonces implementas

105
00:07:58,690 --> 00:08:06,370
mi cliente, servis acá, marca un error que nos pide implementar el método fit al bien, entonces acá

106
00:08:06,370 --> 00:08:17,110
tenemos que inyectar usando ÂTu Witter inyección de dependencia en Spring la vamos a importar, vamos

107
00:08:17,110 --> 00:08:21,220
a inyectar el cliente dado entonces es un privat.

108
00:08:24,070 --> 00:08:25,900
Importamos el cliente dado.

109
00:08:28,040 --> 00:08:30,430
Y le llevamos al atributo cliente dabo.

110
00:08:32,180 --> 00:08:39,050
Entonces el método Find ol acá vamos a ocupar a utilizar este atributo para acceder a los clientes a

111
00:08:39,050 --> 00:08:40,010
la lista de clientes.

112
00:08:42,530 --> 00:08:44,510
Entonces cliente dado fin.

113
00:08:45,950 --> 00:08:48,620
Este método retorna un itera able.

114
00:08:48,860 --> 00:08:50,950
Por lo tanto, acá tenemos que convertir a un list.

115
00:08:51,470 --> 00:08:57,890
Hacemos un cast del list de cliente y ya está terminado implementado el método.

116
00:08:59,450 --> 00:09:02,810
Luego tenemos que anotar con transaccional.

117
00:09:05,630 --> 00:09:12,140
Esta anotación nos permite manejar transacción en el método transaccional de Spring Framework transacción

118
00:09:12,290 --> 00:09:12,980
anotacion.

119
00:09:13,970 --> 00:09:19,160
Y cómo es una consulta, es un select, sería solamente de lectura.

120
00:09:19,520 --> 00:09:24,590
Acá colocamos Red Only igual bien ahora.

121
00:09:24,680 --> 00:09:31,460
De todas forma los métodos del crudo repository ya vienen con transacción, abilidad, ya son transaccionales.

122
00:09:31,610 --> 00:09:34,920
Por lo tanto, podríamos omitir esta anotación.

123
00:09:35,060 --> 00:09:41,930
Ahora yo prefiero anotarlo en el servis, ya que eso describe la transacción alidad de la clase repository,

124
00:09:42,050 --> 00:09:45,880
más que nada para tener el control y hacerlo de una forma más explícita.

125
00:09:45,980 --> 00:09:47,780
Pero de todas formas se puede omitir.

126
00:09:47,780 --> 00:09:49,400
Así quedaría exactamente igual.

127
00:09:49,550 --> 00:09:55,430
Ahora, lo que si todos los métodos nuevos que queramos implementar en el cliente dado, ya sea a través

128
00:09:55,430 --> 00:10:02,360
del nombre, método o utilizando la anotación query, ahí tendríamos que utilizar el transaccion solamente

129
00:10:02,360 --> 00:10:03,590
para los métodos propios.

130
00:10:03,680 --> 00:10:09,650
Pero lo que ya vienen dentro como el CEI, como el fin por Heidy, Fenol, etcétera.

131
00:10:09,890 --> 00:10:11,810
Estos métodos ya viene con transacción.

132
00:10:13,820 --> 00:10:20,210
También quería destacar el auto Wired, una anotación para inyectar el cliente daba el cliente dado

133
00:10:20,300 --> 00:10:25,280
a pesar de que es una interfaz, pero por detrás de escena es plim, va a crear una instancia de una

134
00:10:25,280 --> 00:10:31,460
implementación concreta utilizando la interfaz iba a quedar guardada en el contenedor de Spring en el

135
00:10:31,460 --> 00:10:32,150
contexto.

136
00:10:32,270 --> 00:10:39,260
Por lo tanto, la podemos inyectar en cual quier otro componente, ya sea una clase servis, ya sea

137
00:10:39,410 --> 00:10:42,440
en un controlador, en cualquier clase de nuestra aplicación.

138
00:10:42,620 --> 00:10:44,540
Bien, qué más queda para finalizar?

139
00:10:44,570 --> 00:10:47,450
Faltaría anotar con servis.

140
00:10:50,160 --> 00:10:57,510
Una actuación muy importante, ya que con esto decoramos y marcamos esta clase como un componente de

141
00:10:57,510 --> 00:10:58,180
servicio.

142
00:10:58,200 --> 00:11:03,960
En Spring y también se va a guardar en el contenedor de Spring, que va a quedar almacenado en el contexto

143
00:11:04,110 --> 00:11:10,480
y después podemos inyectar este objeto, este beans de Spring en el controlador y lo podemos utilizar.

144
00:11:10,620 --> 00:11:13,740
Pero para eso tenemos que decorarlo y servis.

145
00:11:14,100 --> 00:11:19,470
Lo que hace es justamente es un tipo, un estereotipo de component.

146
00:11:19,590 --> 00:11:26,340
Por lo tanto, con component marca la clase, la decora para que sea un componente del framework, un

147
00:11:26,340 --> 00:11:29,160
beans y se registra en el contenedor.

148
00:11:30,270 --> 00:11:31,110
Vamos a guardar.

149
00:11:32,790 --> 00:11:39,670
Ya tenemos implementar nuestra clase service bien y estamos listo con nuestra lógica negocio, con toda

150
00:11:39,670 --> 00:11:43,840
la clase del modelo y la próxima clase continuamos con el controlador REST.

151
00:11:43,870 --> 00:11:47,200
Quedamos hasta acá y cualquier duda que tengan las revisamos.

152
00:11:47,290 --> 00:11:48,070
Hasta la próxima.
