Я прохожу JOOQ с vertx и пытаюсь использовать AsyncClassicGenericQueryExecutor для выполнения запроса.Это выглядит как
AsyncClassicGenericQueryExecutor queryExecutor = new AsyncClassicGenericQueryExecutor(client);
Future<Integer> updatedCustom = queryExecutor.execute(DSL.using(configuration)
.update(Tables.SOMETHING)
.set(Tables.SOMETHING.SOMEREGULARNUMBER,456)
.where(Tables.SOMETHING.SOMEID.eq(something.getSomeid())));
ссылка: https://github.com/jklingsporn/vertx-jooq/tree/master/vertx-jooq-classic-async
Если вы видите реализацию метода execute в классе AsyncClassicGenericQueryExecutor, он создает соединение с базой данных внутри него.
public Future<Integer> execute(Function<DSLContext, ? extends Query> queryFunction) {
return getConnection().compose(safeExecute(sqlConnection -> {
Query query = createQuery(queryFunction);
log(query);
Future<Integer> future = Future.future();
sqlConnection.updateWithParams(
query.getSQL(),
getBindValues(query),
this.<UpdateResult,Integer>executeAndClose(UpdateResult::getUpdated,
sqlConnection,
future)
);
return future;
}));
}
ссылка: https://github.com/jklingsporn/vertx-jooq/blob/master/vertx-jooq-classic-async/src/main/java/io/github/jklingsporn/vertx/jooq/classic/async/AsyncClassicGenericQueryExecutor.java
Я искал управление транзакциями здесь.Предоставляет ли AsyncClassicGenericQueryExecutor управление транзакциями?или мы должны написать собственный код для него?Также, если соединение с базой данных создается внутри метода execute (который является реализацией jooq), как мы можем написать некоторый пользовательский код транзакции выше, так как транзакция должна происходить на одном соединении.Может кто-нибудь, пожалуйста, руководство.