8

我正在阅读Java 中Connection的 s vs DataSources 并且我有一些问题。aDataSource真的只是一个管理器和一个Connection(或多个连接)的抽象吗?

4

4 回答 4

12

来自文档

用于连接到此 DataSource 对象所代表的物理数据源的工厂。作为 DriverManager 工具的替代方法,DataSource 对象是获取连接的首选方法。

实际上,aDataSourceConnections 的提供者,它有多种以不同方式运行的实现。如:

  1. 基本实现——产生一个标准的 Connection 对象

  2. 连接池实现——生成一个将自动参与连接池的连接对象。此实现与中间层连接池管理器一起使用。

  3. 分布式事务实现——生成一个可用于分布式事务并且几乎总是参与连接池的 Connection 对象。此实现与中间层事务管理器一起使用,并且几乎总是与连接池管理器一起使用。

于 2013-03-03T16:38:30.320 回答
4

Connection是连接:)DataSource是连接管理器(连接池)。

于 2013-03-03T16:37:24.377 回答
-1

数据源是你的数据源,连接是驱动。

于 2013-03-03T16:34:48.220 回答
-1

DataSource 在其现有形式中是一个错误的概念,就好像它旨在抽象交互,它不应该首先返回一些 SQL 连接来与之交互。这也是矫枉过正,XA是一个幻想概念,有些人因世界上缺乏可靠的实施而付出了沉重的代价(我的意思是所有企业商业实施者都失败并暴露业务......有人因此而在金融领域受到伤害,但我不会提及名称)。一般来说,无论 Sun 还是 Oracle 推荐它,它都会导致过度设计和代码中的一些技术污垢(处理上下文、获取数据的额外步骤、一些外部配置......最终它仍然是特定于无论如何供应商实现)。一些开发的企业解决方案处理池、连接恢复等

作为记录,我与两者都合作过,并且基于在不同地方遇到的事实。如果您对此表示怀疑,请询问为什么您可以在 Hibernate 配置中看到纯 JDBC URL 在企业的所有地方。许多人只是简单地抛弃了 J2EE 的重量级思想并转向轻量级……也使用基于 DriverManager 的普通连接。

你想让你的职业生涯上线,然后继续使用 XA 数据源和恢复失败的事务,其中糟糕的 XA 实现严重失败。

于 2013-07-17T13:57:22.627 回答