Continuamos con la clase Cerve.
Bueno, pero de qué se trata?
En la clase anterior habíamos trabajado con repositorio en nuestra clase main y todo mezclado, toda
la lógica negocio, todos los datos acoplado a nuestra clase cliente o principal.
Otra forma, trabaja con un service y desacoplar todo lo que es lógica negocio, todo lo que son los
datos manejo de repositorio a una clase separada de tal forma dar como una fachada una puerta de entrada.
Actúa nuestra lógica negocio implementando este patrón diseño nuestra clase servis como una capa negocio,
pero no solamente le permite desacoplar, sino también se le conoce como un repositorio manager o dao
manager, donde podemos tener varios objetos o instancias atributos de distintos repositorio y estos
pueden interactuar unos con otros.
Pueden ser repositorio o clase de acceso a dato, los daos y todos trabajar en conjunto bajo una misma
transacción con diferentes tabla en la Ayato.
Bueno, lo mismo que hemos estado trabajando de forma acoplada en el main, pero acá de una forma mucho
más ordenada en un método.
Y este método bueno, cada método al ser que se encarga de traja con un bloque de sentencias, maneja
transacciones con uno o varios repositorio trabajando en conjunto.
Esa es la idea.
Ese es el principio de una clase servis prestar un servicio de lógica negocio.
Bien, comencemos.
Primero vamos a crear nuestra clase service.
Entonces bajamos por acá, pero antes.
Bueno, un РАМКАХ como siempre con add insert por acá un package.
Le vamos a llamar servicio o service como quieran.
Si lo tienen en inglé ningún problema.
Y acá mismo en servicio vamos a crear una interfaz.
Entonces nueva clase, seleccionamos interfaz, le vamos a llamar servicio también o service.
Perfecto, entonces dentro del pack servicio, la interfaz servicio y comenzamos con los métodos, típicamente
son los mismos métodos como base que tiene el repositorio.
Claro, porque eventualmente podríamos trabajar con los métodos del repositorio y el servis.
Recuerden, es una fachada para acceder a estos repositorio de forma individual o como he explicado,
también métodos que interactúan varios repositorio bajo un mismo bloque de transacción.
Qué métodos tenemos en el repositorio?
Por ejemplo, producto?
Vamos a devolver primero un list del tipo producto, pero vamos a importar list@ de ya útil como siempre.
Luego del tipo bruto método liter perfecto.
Otro método que tenemos del repositorio es por Heidy que devuelve un producto por Heidy lo Heidy perfecto
bajamos guardar también devuelve un producto y pasamos un producto que queremos guardar o modificar.
Y por último, eliminar.
Eliminar.
Log Heidi perfecto.
Qué más?
Otro más Veidt indica tenemos el método de transacción, el más importante, el que guarda el producto
junto con su categoría.
Primero creamos la categoría, le insertamos, devuelve el objeto categoría con el Heidy, luego creamos
el producto con esa categoría.
Entonces es básicamente llevar todo lo que tenemos en el método main de nuestra clase cliente.
A este método del servicio que transaccional y aparte interactúa con nuestra lógica negocio, con los
repositorios, con los dos, le pudiéramos llamar guardar producto con categoría.
Se guarda el producto con categoría.
Vamos a pasar el producto y la categoría.
Categoría de la categoría.
Vamos a importar al enter.
Perfecto.
Punto y coma.
Solamente faltaría lanzamiento escepción.
Entonces, por ejemplo, en el método litat por acá vamos a colocar throws SQL escepción SQL Exception.
Ahí lo tenemos.
Y lo mismo vamos a copiar esto acá por cada método.
Entonces lo copiamos, bajamos y lo pegamos.
Claro, porque esta acepción va a devolver nuestro repositorio y lo vamos a manejar con el trade, conectate
en los metros servis, pero no en todos los métodos, solamente en los métodos que vamos a manejar transacciones
en el guardar, eliminar, guardar producto con la categoría.
Pero por ejemplo en listar en por Heidy son métodos quien realiza consulta.
No es necesario tener que manejar transacciones con el comic con el rollback.
Entonces en ese caso, si llega a ocurrir un error, simplemente lo lanzamos en el método.
Ahora, si estamos en un método que modifica algún registro de la tabla, ya sea para eliminar, para
crear, para editar.
Bueno, manejamos trait catch.
Si se lanza un excepción del repositorio, bueno, hacemos un rollback y si todo sale bien hacemos un
ComitÃ.
Bien podríamos tener casi lista nuestra clase servicio.
Ahora opcionalmente lo vamos a ver.
Ahora podríamos tener más métodos porque solamente tenemos lo del producto y esto sería un servicio
que podría estar orientado, enfocado tanto producto como categoría.
Es decir, como categoría de producto son dos tabla que está muy relacionada mediante una Franki.
Entonces podríamos tener una clase servicio en común para ambos, ya que acá se manejan ambos repositorio.
Entonces también podríamos tener un listar para categoría un por Heidy para categoría Aguardad categoría
Eliminar categorías y fijan el domingo un método de producto, pero también para categoría porque no
es necesario tener una clase servicio por cada tabla.
No solamente podríamos tener una clase service de servicio y dentro manejarlo repositorio o todos los
repositorio que estén relacionados.
Ahora, claro, si tenemos dos tabla que no tienen ninguna relación, no tiene mucho sentido que formen
parte del mismo servicio.
Entonces dictar categoría.
Listar categoría.
Categoría Guardar categoría para que sea distinto guardar se fijan litar categoría Guardar categoría
Bajamos portería por Heidy acá devuelve también categoría.
Por endi categoría loc@ hoy día.
Bajamos.
Portaría eliminar voy
eliminar.
Categoría.
Y listo.
Ahí tenemos el repositorio completo, faltaría los drows.
Así que vamos a copiar acá y lo pegamos también en cada uno en categoría.
Él está bien.
El siguiente paso es crear la clase servicio implemente que implementa la interfaz.
Entonces nos vamos a ca. alpacas, al insert.
Vamos a crear la clase.
Le podríamos llamar producto, servicio o catálogo servicio, claro, porque como tenemos producto y
categoría y forma parte de este catálogo producto podría ser catálogo entonces catálogo, servicio,
implementos, servicio.
Y acá con Alt Enter implementamos los métodos de la interfaz.
Todos.
Todo lo relacionado producto a categoría y el método tener en común guardar productos con categoría.
Recuerden entonces una clase de servicio que presta una funcionalidad lógica.
Negocio desacoplar todo lo que sean datos de los controladores de nuestra clase cliente como en el caso
del método Main y también manejar transacciones dentro estos métodos y dentro pudrirme interactuar con
más de un repositorio.
Por lo tanto, los atributos de esta clase van a ser los repositorio.
El siguiente paso es definir los atributos.
Entonces vamos a crear un par de atributos private del tipo repositorio.
Entonces el repositorio de producto le vamos a llamar producto repositorio producto repositorio perfecto.
Este es el primero.
El segundo privat lo mismo, pero para categoría.
Categoría Repositorio.
Bien, vamos a tener un constructor constructor, pero vacío.
Y acá vamos a inicializar los datos.
Entonces seleccionar non nada un constructor.
Bajamos diez punto producto repositorio igual new producto repositorio y acá nos pide pasar la conexión.
Pero obviamente acá no la tenemos.
Entonces tenemos que crear un constructor vacío en los repositorio para que no nos dé error, para que
no nos marque error con la conexión.
Punto y coma.
Lo mismo con Tiz.
Categoría Repositorio.
Perfecto, lo siguiente nos vamos a la clase, partimos primero en producto, implemento, control B
y acá vamos a crear un nuevo constructor vacío al insert, constructor vacío.
Y lo mismo categoría regresamos a catálogo servis se fijan, hay namarca, error, control V llega lo
mismo al insecto constructor vacío.
Pero de alguna forma tenemos que pasar la conexión, ya que no la vamos a pasar por constructor, la
tenemos que pasar vía método Set.
Entonces debajo por acá lo mismo al insert, pero método set.
Y vamos a pasar la conexión.
Y esto mismo lo copiamos y lo pegamos en el otro repositorio en producto.
Bueno, lo podemos copiar o lo podemos generar.
Así que volvemos a pro-ducto porque estamos en categoría.
Bajamos al insecto setter de la conexión solamente el 0.
Bien, y me tengo que definir este método Set Connection Set con tal o cual mismo nombre en la interfaz
repositorio.
Entonces vamos a seleccionar el vey set con todo acá lo copiamos, nos vamos al interfaz repositorio,
lo tenemos acá abajo.
Bajamos, lo pegamos.
Punto y coma.
Es decir, agregamos un método set.
Para qué?
Como el tipo de los repositorio en la clase servis del tipo de la interfaz.
Si nos vamos acá a catalogos servicio el tipo de repositorio de la interfaz.
Entonces para poder acceder al método de la conexión al método set y así asignar la conexión, necesitamos
que esté disponible no solamente en la clase que implementa la interfaz repositorio, sino también en
la interfaz misma.
Si no, no vamos a poder asignar la conexión.
Bueno, y luego en listar por Heidy, guardar, conectarnos, ir a buscar en cada método, id a buscar
una conexión al pull de conexiones y se lo asignamos vía método set.
Veamos como por acá bajamos.
Lo hemos visto, pero con un troi con recurso.
El objeto conexión con igual nuestra clase conexión conexión base datos punto get con echo cerramos
el trie por ejemplo esta litas de producto.
Entonces vamos a utilizar el producto repositorio producto repositorio punto Set Connection y pasamos
a la conexión.
Así asignamos y podemos realizar la consulta o la operación.
Y esto mismo te trae, tiene que ir en cada método.
Entonces vamos a copiar en cada método de relacionado a producto, productos, repositorio.
Entonces acá también.
Acá también.
Elimina también.
Y en categoría no?
Bueno, sería similar.
De hecho, vamos a copiar, pero en vez de producto sería categoría, categoría repositorio.
Y lo mismo los seleccionamos Control C y vamos pegando por Heidy Categoría.
Guardar categoría.
Eliminar, ya que hoy día ambos, tanto categoría repositorio como producto, entonces agregamos acá
producto porque son dos repositorio que interactúan productos repositorio punto set connection y pasamos
la conexión electo y lo dejamos así por ahora y continuamos en la siguiente clase implementando cada
uno de estos métodos.
Pero recuerden cada método que modifica la tabla Guardar productos con categoría elimina categoría.
Aguardad categoría.
Después tenemos eliminar producto, guardar producto por Heidy producto por ahí no porque consulta,
pero otro método que modifican sería con transacción con el trait catch anidado dentro de la conexión.
Bueno, tal como lo vimos en la clase con el método main, además tenemos que modificar el auto commit
en fols.
Realizar el commit.
Después el rollback se fijan y así.
Pero eso lo dejamos para la siguiente clase.
Nos vemos.