为什么我们使用 DataSource 而不是 DriverManager?

新手上路,请多包涵

我正在阅读 Java JDBC 规范 (vr. 4),我遇到了这个声明:

DataSource — 此接口是在 JDBC 2.0 可选包 API 中引入的。它优于 DriverManager,因为它允许有关底层数据源的详细信息对应用程序透明

我想了解的是 ConnectionDataSource 之间的区别,以及它存在的原因。我的意思是,上面的块说关于数据源的详细信息对应用程序是透明的,但是不会在属性文件中外部化数据库属性,例如用户名、密码、url 等,然后使用 DriverManager 以相同的方式工作吗?

并且创建的 DataSource 接口是否只是为了具有返回可以合并的连接等的通用方式?在 Java EE 中,应用程序服务器是否实现了这个接口,部署的应用程序是否引用了数据源而不是连接?

原文由 LuckyLuke 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 666
2 个回答

更好的可扩展性和维护性

对于 DriverManager 您需要了解所有详细信息(主机、端口、用户名、密码、驱动程序类)才能连接到数据库并获得连接。将它们外化到属性文件中不会改变您需要了解它们的事实。

使用 DataSource 你只需要知道 JNDI 名称。 AppServer 关心细节,它不是由客户端应用程序的供应商配置的,而是由托管应用程序的管理员配置的。

可扩展性:

假设您需要自己创建连接,您将如何处理不断变化的负载,有时您有 10 个用户,有时您有 1000 个用户,您不能只在需要时获得连接,然后再“释放”它,这样数据库服务器就不会摆脱连接,这会导致您进入连接池。 DriverManager 不提供, DataSource 提供。

如果您要自己编写连接池,则必须使用 DriverManager ,否则使用 DataSource

原文由 A4L 发布,翻译遵循 CC BY-SA 4.0 许可协议

DriverManager

  • 在 java 类中创建/关闭连接时会影响应用程序性能。
  • 不支持连接池。

DataSource

  • 提高应用程序性能,因为连接不是在类中创建/关闭的,它们由应用程序服务器管理,并且可以在运行时获取。
  • 它提供了创建连接池的工具
  • 对企业应用有帮助

原文由 NaveenKumar1410 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题