In a project on which I'm working, we have the concept of change awareness (CA). For DBs that support triggers, we have triggered CA. A trigger is fired on insert/update/delete, and it places some information about the change in a change log table, housed in the same DB. We also have a program the polls the change log on a regular basis. If entries exist in the change log when it's polled, all entries are extracted, loaded into a java.util.List of
Data Transfer Objects, and the list is passed to another component for processing.