Разница между DriverManagerDataSource и SimpleDriverDataSource - PullRequest
2 голосов
/ 20 марта 2019

Весной, в чем разница между использованием DriverManagerDataSource и SimpleDriverDataSource для создания нового источника данных с использованием его driverClassName, url, имени пользователя и пароля?

Напримерс DriverManagerDataSource вы можете сделать что-то вроде:

DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);

В то время как с SimpleDriverDataSource вы можете сделать:

SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
Class<? extends Driver> driver = (Class<? extends Driver>) Class.forName(driverClassName);
dataSource.setDriverClass(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

DriverManagerDataSource - Простая реализация стандартного интерфейса JDBC DataSource, настройка простого старого JDBC DriverManager через свойства компонента и возврат нового соединения из каждого вызова getConnection.

SimpleDriverDataSource - Аналогичен DriverManagerDataSource, за исключением того, что он обеспечивает прямое использование драйвера, что помогает в решении общих проблем загрузки классов с JDBC DriverManager в специальных средах загрузки классов, таких как OSGi.

Подробнее

2 голосов
/ 20 марта 2019

С описанной точки зрения есть небольшая разница.Основное различие носит концептуальный характер и вступает в действие в среде OSGi - со ссылкой на DriverManagerDataSource javadoc :

В специальных средах загрузки классов, таких как OSGi, этот класс эффективно заменяется SimpleDriverDataSource из-зак общим проблемам загрузки класса с JDBC DriverManager, которые решаются путем прямого использования драйвера (именно это делает SimpleDriverDataSource).

...