No MySQL Connector/J 8.0 Developer Guide ( driver JDBC para MySQL), não encontrei nenhuma menção a uma implementação para a DataSource
interface em JDBC.
Para citar o DataSource
Javadoc:
Uma alternativa à
DriverManager
facilidade, umDataSource
objeto é o meio preferido de obter uma conexão.
Portanto, eu esperaria que uma implementação fosse fornecida com o Connector/J. Por exemplo, para este driver JDBC do Postgres , posso encontrar a implementação de DataSource
na classe PGSimpleDataSource
, conforme discutido no Stack Overflow .
➥ Não há implementação de DataSource
for Connector/J ? Ou eu perdi?
Existe esta página, 6.1 Driver/Datasource Class Name . Mas, apesar do título, menciona apenas o nome da classe do driver, não o nome da classe para uma DataSource
implementação.
O driver tem
com.mysql.cj.jdbc.MysqlDataSource
(há também umConnectionPoolDataSource
e umaXADataSource
implementação). A implementação real deMysqlDataSource
usa o driver JDBC diretamente, semelhante ao queDriverManager
faria.O MySQL Connector/J quase não menciona fontes de dados. Na verdade, a única referência que encontrei
MysqlDataSource
foi em Changes in the Connector/J API . Não tenho certeza se é uma escolha consciente da equipe de documentação do MySQL, mas geralmente faz pouco sentido usarMysqlDataSource
diretamente em seu código (ele não fornece pool de conexão)MysqlConnectionPoolDataSource
eMysqlXADataSource
não é para uso direto nem é um pool de conexões (em vez disso, eles servem como uma fábrica para conexões para uma origem de dados Java EE que fornece pool de conexões e/ou transações distribuídas).Muitas maneiras de usar o JDBC envolvem o uso de fontes de dados de terceiros fornecendo um pool de conexões (por exemplo, HikariCP, DBCP, c3p0), e essas geralmente usam
DriverManager
diretamente (embora alguns também permitam fornecer uma implementação de fonte de dados) ou por meio de uma fonte de dados de um servidor de aplicativos JavaEE/JakartaEE. Geralmente, é melhor usá-los do que confiar na implementação da fonte de dados de um driver.