MappedTable 可以在运行时动态定义吗?

Can MappedTable be defined dynamically at runtime?

一段时间以来,我一直是一个快乐的 jOOQ 用户。在我的应用程序中,我从不更新或删除任何内容。我总是插入一个新行,以便整个历史记录始终可用。该应用程序具有时间机器模式,可以查看给定日期的数据。

实体的架构类似于

通过过滤 inserted_at 列,我可以让我的时间机器运转起来。

一切都很好,但是随着数据越来越多,应用程序性能越来越差。我想走捷径

我考虑执行以下操作:

为了动态决定,我考虑在我的 jOOQ 配置中求助于 MappedTable

MappedTable 的使用中是否有任何缓存层,或者我自己的 MappedTable 实现是否安全,它根据一些动态决定命中哪个 table上下文信息?

我正在考虑使用代理来做到这一点。

is there any caching layer in the usage of MappedTable

是的,否则查找会相对较慢,至少在基准测试中是这样。缓存位于您的 Configuration.

如果你想绕过缓存,你可以为每个查询创建一个新的 Configuration,但大多数例子建议你注入一个 Configuration 实例,因为所有缓存都位于那里.

但是根据我对您的要求的理解,您不会 per-query 刷新缓存,而是每小时/每天刷新一次?在那个时间间隔创建一个新的 Configuration 应该没问题。

or would it be safe to have my own implementation of MappedTable that dynamically decides which table to hit based on some context information

不,那个代理行不通,至少在 jOOQ 3.16 中行不通