Skip to content

DataSource

Use this integration when Spring already manages transactions through its DataSource. DataSourceUtils.getConnection yields the connection bound to the current transaction. Wrap it in a JdbcConnectionProvider and register it as a Spring bean:

DatasourceConnectionProvider.java
public class DatasourceConnectionProvider implements JdbcConnectionProvider {
private final DataSource dataSource;
public DatasourceConnectionProvider(DataSource dataSource) {
this.dataSource = requireNonNull(dataSource);
}
@Override
public Connection getConnection() {
return DataSourceUtils.getConnection(this.dataSource);
}
}

Inject the provider into your generated classes through the Spring configuration:

SpringDatasourceConfig.java
@Bean
PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
JdbcConnectionProvider datasourceConnectionProvider(DataSource dataSource) {
return new DatasourceConnectionProvider(dataSource);
}
@Bean
NamesService namesServiceKaumei(JdbcConnectionProvider provider) {
return new NamesServiceKaumeiJdbc(provider);
}

This approach has not yet been tested outside Spring. Any framework with a managed DataSource should be able to expose a similar provider.