Скажем, у меня есть конструктор запросовВ jOOq, почему соединение сильно связано с конструкцией оператора?
ResultQuery query = DSL.select().from(TABLE);
и связь/контекст бассейн
DSLContext ctx = DSL.using(conn, SQLDialect.MYSQL)
Я хочу быть в состоянии:
- повторно использовать тот же объект запроса для различного подключения/context
- Если тот же экземпляр запроса не может быть использован, используйте запрос в качестве шаблона
- выполнить задачу построения запросов вне процесса выполнения запроса
Поскольку объект запроса в jOOQ имеет конфигурацию с подключением:
Означает ли это, что запрос должен быть построен только на активном соединении контекст?
отказ от ответственности: я использую jOOQ через несколько недель, возможно, мне просто не хватает некоторых документов.
Например, следующий код не является потокобезопасным, и он не будет безопасным, если он не синхронизируется с запросом.
ctx.fetch(query).map(mapper);
источник DefaultDSLContext.fetch в 2157 версии 3.5.3
public <R extends Record> Result<R> fetch(ResultQuery<R> query) {
final Configuration previous = Utils.getConfiguration(query);
try {
query.attach(configuration());
return query.fetch();
}
finally {
query.attach(previous);
}
}