为什么我们使用数据源而不是驱动程序管理器?

2022-08-31 10:14:36

我正在阅读Java JDBC规范(vr. 4),我阐述了以下语句:

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

我试图理解的是连接数据源之间的区别是什么,以及它为什么存在。我的意思是,上面的块说关于数据源的细节对应用程序是透明的,但是在属性文件中外部化数据库属性(如用户名,密码,url等),然后使用DriverManager以同样的方式工作吗?

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


答案 1

更好的可扩展性和维护

因为您需要知道所有详细信息(主机,端口,用户名,密码,驱动程序类)才能连接到数据库并获取连接。在属性文件中外部化这些内容不会改变您需要了解它们的事实。DriverManager

使用 您只需要知道 JNDI 名称。AppServer 关注详细信息,不是由客户端应用程序的供应商配置的,而是由托管应用程序的管理员配置的。DataSource

可扩展性:

假设您需要自己创建连接,您将如何处理不断变化的负载,有时您有10个用户,有时您有1000个用户,您不能在需要连接时获得一个连接,然后“释放”它,以便数据库服务器不会脱离连接,从而导致连接池。 不提供它,确实。DriverManagerDataSource

如果您要自己对连接池进行编程,则必须使用 ,否则请使用 。DriverManagerDataSource


答案 2

DriverManager

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

DataSource

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

推荐