第 6 章 使用 JDBC 数据源
以下主题讨论 Fuse OSGi 运行时中的 JDBC 数据源的使用:
6.1. 关于连接接口
用于执行数据操作的最重要 对象是 java.sql.Connection
接口的实施。从 Fuse 配置的角度来看,了解如何 获取 连接
对象非常重要。
包含相关对象的库有:
-
postgresql:
mvn:org.postgresql/postgresql/42.2.5
-
MySQL:
mvn:mysql/mysql-connector-java/5.1.34
现有实现(包括在 驱动 JARs中)提供:
-
postgresql:
org.postgresql.jdbc.PgConnection
-
MySQL:
com.mysql.jdbc. JDBC4Connection
(请参阅com.mysql.jdbc.Driver
的各种connect*()
方法)
这些实施包含数据库特定的逻辑,用于执行 DML、DDL 和简单的事务管理。
理论上,可以手动创建这些连接对象,但有两个 JDBC 方法隐藏了详情以提供清理 API:
-
java.sql.Driver.connect()
- 这个方法在一个独立的应用程序中使用。 -
javax.sql.DataSource.getConnection()
- 这是使用 factory 模式的首选方法。类似的方法从 JMS 连接工厂获取 JMS 连接。
此处 不讨论驱动程序管理器 方法。这个方法只是一个小 层,对于给定连接对象来说,这个方法只是一个小型层。
除了 java.sql.Connection
之外,它有效地实施特定于数据库的通信协议,还有另外两个专用的 连接 接口:
-
javax.sql.PooledConnection
代表物理连接。您的代码不会直接与这个池连接交互。相反,会使用getConnection()
方法获取的连接。这种间接寻址支持在应用服务器的级别管理连接池。使用getConnection()
获取的连接通常是代理。当这种代理连接关闭时,物理连接不会关闭,而是会在受管连接池中再次可用。 -
javax.sql.XAConnection
允许获取与javax.transaction.xa.XAResource
对象关联的 javax.transaction.xa.XAResource 对象,以用于javax.transaction.TransactionManager
。由于javax.sql.XAConnection
扩展javax.sql.PooledConnection,它还提供了"getConnection()
方法,它与典型的 DML/DQL 方法的访问。