gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:44:49 28 4
gpt4 key购买 nike

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

DataSource — this interface was introduced in the JDBC 2.0 Optional Package API. It is preferred over DriverManager because it allows details about the underlying data source to be transparent to the application

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

创建 DataSource 接口(interface)是否只是为了有一种通用的方式来返回可以池化的连接等?在 Java EE 中,应用服务器是否实现了此接口(interface),并且部署的应用程序是否具有对数据源而不是连接的引用?

最佳答案

更好的可扩展性和维护

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

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

可扩展性:

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

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

关于java - 为什么我们使用 DataSource 而不是 DriverManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15198319/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com