Forwarding database
ForwardingDatabase is a mechanism to perform additional logic before executing a query against a database. One example is to create a forwarding database that prevents returning cached query results, as in the following snippet.
showLineNumbers
1ForwardingDatabase noCacheDatabase = new ForwardingDatabase() {23@Override4protected <T> Query<T> filterQuery(Query<T> query) {5return query.clone().noCache();6}78};
You can then use the no-cache forwarding database by specifying it in Query#using:
showLineNumbers
1Query.from(User.class).using(noCacheDatabase).selectAll();
Because this query specified noCacheDatabase, Dari invokes the filterQuery method before executing the query.
Both Dari and Brightspot use ForwardingDatabase for a variety of scenarios. Here are a few examples:
- Dari’s Caching Database
- Brightspot’s Preview Database
- Brightspot’s Authentication Filter