プロジェクトで jooq を使用しようとしていますが、パフォーマンス上の理由から、クエリをキャッシュしたいと考えています。パフォーマンスに関する考慮事項のセクションのユーザー マニュアルでは、クエリ キャッシングについて言及されていますが、それを実現する方法についての例はありません。そのため、次のようにクエリ (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);
私のソフトウェアはマルチスレッド Web アプリケーションですが、2 つの異なるスレッドが同じクエリを同時に使用できないことが保証されています (プールは、プールに再度配置される前に同じクエリを返さない)。
factory がスレッドセーフオブジェクトではないことは知っていますが、コードでこのようなクエリを使用すると問題が発生する可能性がありますか?