10.2.3 基于 JDBC 驱动的数据源
在 Spring 中,通过 JDBC 驱动定义数据源是最简单的配置方式。Spring 提供了三个这样的数据源类(均位于 org.springframework.jdbc.datasource 包中)供选择:
DriverManagerDataSource:在每个连接请求时都会返回一个新建的连接。与 DBCP 的 BasicDataSource 不同, 由 DriverManagerDataSource 提供的连接并没有进行池化管理;
SimpleDriverDataSource:与 DriverManagerDataSource 的工作方式类似,但是它直接使用 JDBC 驱动,来解决在特定环境下的类加载问题,这样的环境包括 OSGi 容器;
SingleConnectionDataSource:在每个连接请求时都会返回同一个的连接。尽管 SingleConnectionDataSource 不是严格意义上的连接池数据源,但是你可以将其视为只有一个连接的池。
以上这些数据源的配置与 DBCPBasicDataSource 的配置类似。例如,如下就是配置 DriverManagerDataSource 的方法:
如果使用 XML 的话,DriverManagerDataSource 可以按照如下的方式配置:
与具备池功能的数据源相比,唯一的区别在于这些数据源 bean 都没有提供连接池功能,所以没有可配置的池相关的属性。
尽管这些数据源对于小应用或开发环境来说是不错的,但是要将其用于生产环境,你还是需要慎重考虑。因为 SingleConnectionDataSource 有且只有一个数据库连接,所以不适合用于多线程的应用程序,最好只在测试的时候使用。而 DriverManagerDataSource 和 SimpleDriverDataSource 尽管支持多线程,但是在每次请求连接的时候都会创建新连接,这是以性能为代价的。鉴于以上的这些限制,我强烈建议应该使用数据源连接池。
Last updated