创建Jooq缓存层

时间:2015-06-10 16:30:02

标签: java postgresql caching jooq

所以,我正在使用Jooq在Postgres上创建一个缓存层。我一直在使用MockConnection / MockDataProvider对象拦截每个查询,这是有效的,但我遇到了一些问题。

首先,如何确定读写之间的关系?也就是说,如果仅将MockExecuteContext传递给MockDataProvider中的execute方法,如何判断查询是insert / update / etc还是select?

我对如何做无效感到有些困惑。我现在正在实现的基本方案是,每当对表进行“写”查询时,我都会使涉及该表的所有高速缓存查询无效。这可以追溯到我的第一个问题,即告诉彼此不同类型的查询,但也提出了另一个问题:如何仅在给定sql字符串和绑定(两者都是MockExecuteContext的属性)的情况下识别查询中使用的表?

此外,这是一种正确的缓存方法吗?我的第一个想法是覆盖fetch()方法,但该方法是最终的,我宁愿不改变已经嵌入Jooq本身的东西。这是我能想到的唯一一种拦截所有请求的方法,因此我可以创建一个单独的持久缓存层。

我已经看到了这个问题(https://groups.google.com/forum/#!topic/jooq-user/xSjrvnmcDHw),但我还不清楚Lukas如何建议从对象中识别表格。我可以尝试实现Postgres NOTIFY,但我想先在Jooq中使用原生的东西。我已经看到这个问题(https://github.com/jOOQ/jOOQ/issues/2665)也出现了很多,但我不确定它是如何应用的。

请记住,我是Jooq的新手,所以我很可能错过了一些明显的东西。

谢谢!

0 个答案:

没有答案