Vamos a comenzar creando la clase de acceso a datos o repository.
Básicamente su función es justamente acceder realiza consulta y operaciones en la base datos.
Eso es todo lo que hace una clase daho o de acceso a dato o repositorio.
El nombre que le queramos llamar.
Y luego vamos a crear la clase servis que en el fondo puede contener a las clases dado y dentro es un
método.
Podrían colaborar o interactuar diferentes dado que realiza consulta a diferentes tabla y todo bajo
una misma transacción.
Este método se envuelve en una sola transacción y pueden trabajar juntos diferentes dado.
Y esa es la gracia.
Y la idea del servis es evitar ensuciar el controlador con la clase dado de forma directa.
Simplemente se acopla y se lleva a una fachada.
Justamente lo que vamos a trabajar en esta clase.
Vamos a comenzar entonces con crear el package para los daho.
Entonces sería Models dado.
No paramos en el package raíz con click derecho New Package.
Con un punto agregamos models.
Punto da.
Bien, hay diferentes forma de implementar un dado, podemos crear una clase, podemos trabajar directamente
con el Entity Manager, con JPA, implementar todo de forma manual, pero Spring tiene un componente
bastante potente, robusto, que se llama Spring Data JPA y esto nos ahorra un montón de trabajo de
tener que estar implementando estos métodos y la consultas de Internet de JPA de forma manual.
Simplemente se implementa una interfaz heredamos de la interfaz CRUD Repository y prácticamente estamos
listos ya.
Trae todos los métodos básicos para un cruz, para un CRUD, para poder listar, para buscar por Heidy,
para modificar, para guardar y para eliminar.
Y además, si queremos podemos implementar nuestros propios métodos.
Customizado.
Usando la anotación query o también utilizando el nombre del método, cosa que vamos a ver un poco en
esta clase, pero vamos a implementar primero la interfaz Dawa, entonces con un clic derecho en el
package Models Daho y nos vamos a Interfax y le damos el nombre y cliente al finalizar.
Simplemente una interfaz que no tiene implementación.
Y acá vamos a extender de CRUD repositorio.
ÂQuÃ propone un Generic tipo genérico?
Acá tenemos el nombre de la clase Entity que está asociado a este daho, a este repositorio sería cliente,
la importamos.
Justamente la clase que creamos el video anterior de cacería.
El tipo de dato de la llave Heidy Lonko y hoy tenemos implementado nuestro dado de acceso a datos y
acá mismo se hacemos por ejemplo con control click.
Nos vamos al detalle, a los métodos de esta interfaz.
Entonces, interfaz para generar operaciones CRUD genéricas de un repository, de una clase de acceso
a datos.
Acá tenemos el método Seif, que recibe un genérico de una entidad.
Acá tenemos guardar varias entidades.
Buscar por Heidy retorna un optional.
Un optional es una clase, un tipo de dato que nos permite manejar mejor el resultado.
Por ejemplo, si se realizó bien la consulta, va a retornar el objeto con quiete.
Si no podemos manejar el error con manejo, decepción o bien retornar null.
En fin, hay distintas alternativas.
Luego tenemos.
Si existe por Heidy para comprobar buscar todas.
Find old retornaban integrable el interfaz de colección.
En fin, hay un montón de cosas count eliminar por ahí, eliminar por un objeto, entidad y varios métodos
más.
Entonces es una interfaz bien interesante que nos propone Spring Data JPA Incluso podríamos revisar
la documentación, la página Proyect Spring y Spring Data JPA.
Nos vamos acá a referencia documentación.
Y acá tenemos concepto del core, la trama, la interfaz repository, tal como la vimos y está interesante
porque va a realizar las consultas y operaciones de acuerdo al nombre método.
Si tenemos el nombre, se va a realizar un persiste en JPA.
Por lo tanto va a hacer un insert a la base.
Si hacemos un fï.
Por Heidy va a realizar una consulta SELLECK a la clase Entity.
En nuestro caso Cliente Huer, el atributo Heidy sea igual al parámetro.
Entonces de acuerdo al nombre, el método va a realizar la consulta incluso más arriba en la documentación
por acá tenemos definiendo query método definiendo un método query.
Entonces a través del nombre método acá podemos realizar consulta en la interfaz.
Podemos implementar método personalizado por ejemplo con find para hacer un select.
Voy es para wear y aunt es para el where and.
Entonces sería Select.
La clase Entity Huer email address igual a este parámetro and last name es igual a este parámetro.
Y así también tenemos para el distintivo.
En fin, acá podemos buscar y realizar consulta de acuerdo al nombre del método.
Y también tenemos por ejemplo operadores tales como el between, por ejemplo.
Esto operadores se pueden utilizar en el nombre método left lan menor que grai dan mayor que like un
huer like.
Otra alternativa aparte de realizar consulta a través del nombre método, podemos utilizar una anotación
la anotación query si nos vamos a JPA repositorios usando query la anotación query también podemos tener
un método con algún nombre que le queremos dar y lo anotamos con Query y acá colocamos la consulta de
JPA o Hibernate.
Recordemos que esta consulta son h uele es el de internet query language orientado a objetos no son
de tablas.
Y acá pasamos un parámetro, un nombre parámetro con el signo pregunta y el índice, que sería el primer
parámetro.
Y acá lo pasamos por argumento.
Entonces internamente va a pasar el valor del email adres de este argumento al Kouhei.
Bien, entonces, volviendo al cliente dado, ya contamos con los métodos que lo estamos heredando,
los métodos para el CRUD.
Por lo tanto, tenemos implementado nuestro dado prácticamente de forma automática utilizando CRUD Repository.
El siguiente paso es crear la clase Servis.
Entonces vamos a crear un nuevo package Models Punto Servicies.
Vamos a finalizar y en Servicies vamos a crear una interfaz
y cliente servis.
Y esta interfaz le vamos a dar un contrato de implementación.
Los métodos del club, por ejemplo, para evitar para Buqué por ahí guardar, editar y eliminar.
Vamos primero con el fin al
cliente.
Find all importamos list de Java útil.
Importamos cliente y por ahora vamos a dejar solamente implementado el final y después vamos a ir implementando
lo demás métodos del service para realizar el cruce.
Entonces ahora vamos a crear la clase servis y vamos a implementar este método.
Vamos a crear entonces la clase SERVIS.
Clientes servis, implemento de implementación, le ponemos imple.
Finalizar Entonces implementas
mi cliente, servis acá, marca un error que nos pide implementar el método fit al bien, entonces acá
tenemos que inyectar usando ÂTu Witter inyección de dependencia en Spring la vamos a importar, vamos
a inyectar el cliente dado entonces es un privat.
Importamos el cliente dado.
Y le llevamos al atributo cliente dabo.
Entonces el método Find ol acá vamos a ocupar a utilizar este atributo para acceder a los clientes a
la lista de clientes.
Entonces cliente dado fin.
Este método retorna un itera able.
Por lo tanto, acá tenemos que convertir a un list.
Hacemos un cast del list de cliente y ya está terminado implementado el método.
Luego tenemos que anotar con transaccional.
Esta anotación nos permite manejar transacción en el método transaccional de Spring Framework transacción
anotacion.
Y cómo es una consulta, es un select, sería solamente de lectura.
Acá colocamos Red Only igual bien ahora.
De todas forma los métodos del crudo repository ya vienen con transacción, abilidad, ya son transaccionales.
Por lo tanto, podríamos omitir esta anotación.
Ahora yo prefiero anotarlo en el servis, ya que eso describe la transacción alidad de la clase repository,
más que nada para tener el control y hacerlo de una forma más explícita.
Pero de todas formas se puede omitir.
Así quedaría exactamente igual.
Ahora, lo que si todos los métodos nuevos que queramos implementar en el cliente dado, ya sea a través
del nombre, método o utilizando la anotación query, ahí tendríamos que utilizar el transaccion solamente
para los métodos propios.
Pero lo que ya vienen dentro como el CEI, como el fin por Heidy, Fenol, etcétera.
Estos métodos ya viene con transacción.
También quería destacar el auto Wired, una anotación para inyectar el cliente daba el cliente dado
a pesar de que es una interfaz, pero por detrás de escena es plim, va a crear una instancia de una
implementación concreta utilizando la interfaz iba a quedar guardada en el contenedor de Spring en el
contexto.
Por lo tanto, la podemos inyectar en cual quier otro componente, ya sea una clase servis, ya sea
en un controlador, en cualquier clase de nuestra aplicación.
Bien, qué más queda para finalizar?
Faltaría anotar con servis.
Una actuación muy importante, ya que con esto decoramos y marcamos esta clase como un componente de
servicio.
En Spring y también se va a guardar en el contenedor de Spring, que va a quedar almacenado en el contexto
y después podemos inyectar este objeto, este beans de Spring en el controlador y lo podemos utilizar.
Pero para eso tenemos que decorarlo y servis.
Lo que hace es justamente es un tipo, un estereotipo de component.
Por lo tanto, con component marca la clase, la decora para que sea un componente del framework, un
beans y se registra en el contenedor.
Vamos a guardar.
Ya tenemos implementar nuestra clase service bien y estamos listo con nuestra lógica negocio, con toda
la clase del modelo y la próxima clase continuamos con el controlador REST.
Quedamos hasta acá y cualquier duda que tengan las revisamos.
Hasta la próxima.