我正在阅读Java中的连接与数据源,我有一些问题。数据源真的只是一个管理器和连接(或多个连接)的抽象?
答案 0 :(得分:9)
来自docs:
用于连接此DataSource对象表示的物理数据源的工厂。作为DriverManager工具的替代方案,DataSource对象是获取连接的首选方法。
实际上,DataSource
是Connection
的提供者,它有各种各样的实现,以不同的方式运行。如:
基本实现 - 生成标准的Connection对象
连接池实现 - 生成一个将自动参与连接池的Connection对象。这个 实现适用于中间层连接池管理器。
- 醇>
分布式事务实现 - 生成一个可用于分布式事务的Connection对象,几乎总是如此 参与连接池。这个实现适用于 中间层事务管理器,几乎总是有连接 合并经理。
答案 1 :(得分:3)
Connection是连接:) DataSource是连接管理器(连接池)。
答案 2 :(得分:-1)
数据源是数据的来源,连接是驱动程序。
答案 3 :(得分:-1)
DataSource在其现有形式中是不合理的概念,就好像它是为了抽象交互一样,它不应该首先返回一些SQL连接来进行交互。此外,它是矫枉过正,XA是幻想概念,有些人因为缺乏可靠的实施而付出了沉重代价(我的意思是所有企业商业实施者都失败并暴露业务......有人因为财务问题而受伤,但我不提名)。一般来说,无论Sun或Oracle是否推荐它,都会导致代码过度工程化和一些技术问题(处理上下文,获取数据的额外步骤,一些外部配置......最后它仍然特定于无论如何,供应商实施)。一些开发的coroporate解决方案处理池,连接恢复e.t.c基于普通连接和DriverManager比企业DBMS供应商提供的DataSource实现更好。
为了记录我和两个人一起工作,我把它建立在不同地方遇到的事实上。如果您对此表示怀疑,那么请问为什么您可以在企业中的Hibernate配置中看到简单的JDBC URL。许多人只是简单地抛弃了J2EE的重量级思想并且变得轻量级......也使用基于DriverManager的普通连接。
你希望你的职业生涯在线,然后继续使用XA DataSources并恢复失败的交易,而糟糕的XA实施失败。