我正在阅读 Java JDBC 规范 (vr. 4),我遇到了这个声明:
DataSource — 此接口是在 JDBC 2.0 可选包 API 中引入的。它优于 DriverManager,因为它允许有关底层数据源的详细信息对应用程序透明
我想了解的是 Connection
和 DataSource
之间的区别,以及它存在的原因。我的意思是,上面的块说关于数据源的详细信息对应用程序是透明的,但是不会在属性文件中外部化数据库属性,例如用户名、密码、url 等,然后使用 DriverManager 以相同的方式工作吗?
并且创建的 DataSource
接口是否只是为了具有返回可以合并的连接等的通用方式?在 Java EE 中,应用程序服务器是否实现了这个接口,部署的应用程序是否引用了数据源而不是连接?
原文由 LuckyLuke 发布,翻译遵循 CC BY-SA 4.0 许可协议
更好的可扩展性和维护性
对于
DriverManager
您需要了解所有详细信息(主机、端口、用户名、密码、驱动程序类)才能连接到数据库并获得连接。将它们外化到属性文件中不会改变您需要了解它们的事实。使用
DataSource
你只需要知道 JNDI 名称。 AppServer 关心细节,它不是由客户端应用程序的供应商配置的,而是由托管应用程序的管理员配置的。可扩展性:
假设您需要自己创建连接,您将如何处理不断变化的负载,有时您有 10 个用户,有时您有 1000 个用户,您不能只在需要时获得连接,然后再“释放”它,这样数据库服务器就不会摆脱连接,这会导致您进入连接池。
DriverManager
不提供,DataSource
提供。如果您要自己编写连接池,则必须使用
DriverManager
,否则使用DataSource
。