Spring Boot + PostgreSQL
Tentacolous¶
Ejecuta codigo Java cuando alguien inserta, modifica o elimina datos en PostgreSQL, aunque el cambio provenga de otra aplicacion, un script SQL o un sistema legado.
Olvidate de consultar la base de datos constantemente o de conectar toda tu aplicacion a JPA. Tentacolous detecta cambios reales mediante triggers y ejecuta metodos Java anotados de forma simple, rapida y confiable.

@UponInserting(entity = Person.class)
public void onPersonInserted(Person person) {
notify(person.getEmail());
}
Lo esencial
Conecta los cambios de PostgreSQL con tu codigo Java.¶
Tentacolous detecta cambios reales en tu base de datos y ejecuta automaticamente el codigo que tu defines. Sin importar si el cambio proviene de tu aplicacion, otra API, un script SQL o un sistema legado.
Detecta cambios reales¶
No solo escucha las operaciones realizadas por tu aplicacion. Tambien captura cambios hechos desde otras APIs, herramientas SQL, procesos ETL o sistemas legados.
Escribe solo Java¶
Anota un metodo con @UponInserting, @UponUpdating o @UponDeleting y recibe la entidad modificada lista para trabajar. Sin escribir consultas adicionales ni codigo repetitivo.
Funciona de forma confiable¶
Tentacolous utiliza triggers de PostgreSQL, una tabla de eventos y un procesador configurable para garantizar que cada cambio sea detectado y procesado correctamente.
Inicio rapido
Empieza en menos de 5 minutos.¶
Solo agrega la dependencia, configura Tentacolous y comienza a reaccionar a los cambios de PostgreSQL con Java.
- Agrega la dependenciaMaven Central
Maven Gradle
<dependency>
<groupId>io.github.aimtone</groupId>
<artifactId>tentacolous</artifactId>
<version>0.1.8</version>
</dependency>
- Agrega propertiesConfig Spring
application.yml application.properties
tentacolous:
enabled: true
schema-management: auto
event-table: db_change_event
poll-interval: 1s
initial-delay: 0s
batch-size: 100
max-attempts: 3
tentacolous.enabled=true
tentacolous.schema-management=auto
tentacolous.event-table=db_change_event
tentacolous.poll-interval=1s
tentacolous.initial-delay=0s
tentacolous.batch-size=100
tentacolous.max-attempts=3
- Usa las anotacionesJava
Generica Insertar Actualizar Eliminar
@UponInserting(entity = Person.class)
public void onPersonInserted(Person person) {
notify(person.getEmail());
}
@UponUpdating(entity = Person.class)
public void onPersonUpdated(Person person) {
syncProfile(person);
}
// o
@UponUpdating(entity = Person.class)
public void onPersonUpdated(Person newPerson, Person oldPerson) {
syncProfile(newPerson);
}
// o
@UponUpdating(entity = Person.class)
public void onPersonUpdated(Person newPerson, Person oldPerson, List<Person> history) {
syncProfile(newPerson);
}
@UponDeleting(entity = Person.class)
public void onPersonDeleted(Person person) {
removeFromIndex(person.getId());
}
// o
@UponDeleting(entity = Person.class)
public void onPersonDeleted(Person person, List<Person> history) {
removeFromIndex(person.getId());
}
@TentacolousListener(
entity = Person.class,
action = ActionListener.UPDATE
)
public void onPersonUpdated(Person newPerson, Person oldPerson) {
syncProfile(newPerson);
}
Necesitas detalles de filtros, modos de schema, seguridad o pruebas manuales?¶
Consulta la guia tecnica para ver configuracion avanzada, ejemplos completos y recomendaciones de produccion.