javax.activation.DataSource与javax.sql.DataSource的区别

今天写Spring连接数据库,导入包的时候,混淆了javax.activation.DataSource与javax.sql.DataSource。

导致DataSource和阿里的DruidDataSource不匹配,却一直以为是阿里依赖问题,在错误的方向弄了很久。后来才发现是javax的DataSource包导入错误。特意查了javax.activation.DataSource与javax.sql.DataSource的区别

如下:

javax.activation.DataSource中定义的接口跟I/O有关,是对资源文件的抽象,类似Reader、Writer等。而javax.sql.DataSource是JDBC2.0标准中的规范,其目的是针对1.0标准通过DriverManager.getConnenction()方式获取到数据库连接。其消耗大、不可复用等缺点而推出的新一代规范。

javax.sql.DataSource接口方法也只有两个:有参和无参的getConnection()方法。具体的现实有DruidDataSource(阿里)和BasicDataSource(Apache),还有HiKariCP(数据库连接池的一个后起之秀,号称性能最好,可以完美地PK掉其他连接池。https://blog.csdn.net/fly_boss/article/details/60965849

这些数据源能提供可复用方式的数据库连接,大多采用连接池实现(这些连接池的原理和C3P0类似,但是性能强很多),好处就是资源的服用。

 


版权声明:本文为weixin_43930956原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。