java - 在 Jooq 中缓存查询

标签 java database jooq

我尝试在项目中使用 jooq,但出于性能原因我想缓存查询。在用户手册中 performance consideration section ,提到了查询缓存,但没有关于如何实现它的示例。所以我尝试按如下方式缓存查询(例如 SimpleSelectConditionStep):

SimpleSelectConditionStep query = getFromPool();
if(query != null) {
    factory.attach(query);
    query.bind(1,"John");
} else {
   // create query
   factory.select(PERSON).where(PERSON.NAME.equal("Michael"));
}
// fetch and use query
result = query.fetchOne();
.....
putToPool(query);

我的软件是一个多线程网络应用程序,但它保证两个不同的线程不能同时使用相同的查询(池在再次放入池之前不会返回相同的查询)。

我知道工厂不是线程安全对象,但我想知道在代码中使用这样的查询会导致问题吗?

最佳答案

如果准备语句需要很长时间,您可以使用 jOOQ 的语句重用功能:

http://www.jooq.org/doc/latest/manual/sql-execution/reusing-statements

如果经常执行相同的查询,这将在内部保留查询中的 open 语句。除此之外,我怀疑对于您示例中的简单查询,您是否需要为 jOOQ 对象提供缓存。

关于java - 在 Jooq 中缓存查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17273635/

相关文章:

java - JPADatabase 的 jooq codegen 无法正常工作

java - 为什么这不能形成一个好看的正方形?

java - 想要每 24 小时时间间隔在 java 数据库连接中运行线程

c# - 具有无限参数的参数化 SQL 查询

scala - SBT - 获取托管 jar 的路径

spring - 如何简单地添加到Spring Data REST实体的链接

java - 在 Google App Engine JAVA 中创建多个实例

java - 接口(interface)实现启动不同的异常

Java8 Lambda 性能与公共(public)函数

mysql - 将 blob 文本转换为图像以及将图像转换为文本