es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo detectar operaciones de base de datos con JPA/Hibernate?

Mi escenario es el siguiente: tengo dos aplicaciones, una permite al usuario interactuar con el catálogo de productos (solo API GET, totalmente pasiva) y la otra permite a los administradores crear/modificar/eliminar (API CRUD) productos del catálogo.
Para acelerar la aplicación del usuario, he estado pensando en implementar Spring Cache. El problema es que si un administrador realiza alguna interacción con la base de datos (Oracle19c), la aplicación para los ciudadanos no detecta nada.
¿Cómo puedo resolver este problema?
En el pasado, logré algo similar con los Change Streams, utilizando Mongo o gracias a los Eventos de Spring Data, de manera que se pudiera percibir cualquier operación en la base de datos.
Necesitaría detectar las operaciones realizadas en la base de datos para vaciar y recargar mi caché con las últimas actualizaciones siempre, pero no sé si es posible.
¿Algún consejo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en Java y tecnologías relacionadas, la solución a este problema es implementar un mecanismo de sincronización de datos entre las dos aplicaciones. La forma más directa de hacerlo es utilizando un sistema de intermediario de mensajes como Apache Kafka o RabbitMQ.

    Cada vez que un administrador realiza cambios en el catálogo de productos, se podría publicar un mensaje en un tema específico que notifique a la segunda aplicación para que invalide su caché. Esta notificación podría activar la recuperación de las últimas actualizaciones de la base de datos y volver a poblar su caché.

    Otra forma de implementar esto podría ser utilizando los eventos de Spring Data JPA. Cada vez que un administrador modifique un producto, se podría activar un evento JPA que notifique a la segunda aplicación para que invalide su caché.

    En resumen, la solución al problema es implementar un mecanismo de sincronización entre las dos aplicaciones. De esta manera, cuando ocurran cambios, la segunda aplicación podrá detectarlos y actualizar su caché en consecuencia.

Comments are closed.