在Spring中,使用 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);
答案 0 :(得分:1)
从所描述的观点来看,差异很小。主要区别是概念上的,并且在OSGi环境中起作用-引用DriverManagerDataSource javadoc:
在特殊类加载环境中 例如OSGi,此类已被有效地取代 SimpleDriverDataSource是由于一般类加载问题而导致的 JDBC DriverManager可通过直接使用驱动程序来解决( 正是SimpleDriverDataSource所做的。)
答案 1 :(得分:1)
DriverManagerDataSource -标准JDBC DataSource接口的简单实现,通过bean属性配置普通的旧JDBC DriverManager,并从每个getConnection调用返回一个新的Connection。
SimpleDriverDataSource —与DriverManagerDataSource相似,不同之处在于它提供直接的Driver使用,这有助于解决在OSGi等特殊类加载环境中使用JDBC DriverManager进行的类加载问题。