4.0.0
Fast, faster, reactive
- Starting from version 4.x,
vertx-jooq
adds support for this winning, high performance postgres driver. - Finally added support for
DAO#insertReturning
for the async postgres driver. - A new
UnifiedQueryExecutor
interface that allows the execution of arbitrary jOOQ-SQL against an API with the
same return value for all drivers! Currently there are three interfaces you can use:ClassicQueryExecutor
,
CompletableFutureQueryExecutor
andRXQueryExecutor
. The following is possible now:
//first, you decide to use the classic API using JDBC
ClassicQueryExecutor queryExecutor = new JDBCClassicGenericQueryExecutor(configuration,vertx);
Future<QueryResult> queryResult = queryExecutor.query(dslContext ->
dslContext
.selectFrom(Tables.SOMETHING)
.where(Tables.SOMETHING.SOMEID.eq(something.getSomeid()))
);
//fetching values using new QueryResult-API
queryResult.map(res -> {
Integer someId = res.get(Tables.SOMETHING.SOMEID);
return someId;
});
...
//now some time in the future you decide to use the reactive driver instead
ClassicQueryExecutor queryExecutor = new ReactiveClassicGenericQueryExecutor(configuration,pgClient);
//the return value for the query didn't change!
Future<QueryResult> queryResult = queryExecutor.query(dslContext ->
dslContext
.selectFrom(Tables.SOMETHING)
.where(Tables.SOMETHING.SOMEID.eq(something.getSomeid()))
);
queryResult.map(res -> {
Integer someId = res.get(Tables.SOMETHING.SOMEID);
//hooray same API
return someId;
});
- In addition you can now obtain the
QueryExecutor
from every DAO by callingDAO.queryExecutor()
. - Move away from
GeneratorStrategies
to generate DAOs: it was a misconception to useGeneratorStrategies
to distinguish
between the APIs, drivers and injection-support. Instead, there is now a Builder-API to create theVertxGenerator
of your choice.
This comes in handy if you configure your jOOQ code generator programmatically. Example:
VertxGenerator vertxGenerator = VertxGeneratorBuilder
.init()
.withClassicAPI()
.withAsyncDriver()
.withGuice(true)
.build();
- Breaking changes:
- DAOs are no longer aware of
org.jooq.Configuration
, instead it is now located in theQueryExecutor
. QueryExecutor
API changed in a way, that all methods no longer accept instances oforg.jooq.Query
butFunction<DSLContext, ? extends ResultQuery<R>>
.
It is no longer necessary to keep aConfiguration
object in order to execute random jOOQ SQL.JDBCQueryExecutor.execute
was renamed toJDBCQueryExecutor.executeAny
.- Upgrade from 3.x: first, change the generator- and strategy name in your code generator configuration.
Use the names as described in the module's documentation of the API and driver of your choice (e.g.vertx-jooq-classic-async
).
If you've used ownGeneratorStrategies
all have to extend now fromVertxGeneratorStrategy
.
Then, update the dependencies to the code-generator and generate the code. Now you should update the vertx-jooq-YOUR_API-YOUR_DRIVER
dependency. In case you've been usingQueryExecutors
you'll have to change the method calls to it as described above.
- DAOs are no longer aware of
Related issues:
https://github.com/jklingsporn/vertx-jooq/milestone/11?closed=1