第 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
现有实现(包含在 驱动程序 JAR中)提供:
-
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 ()
- 这是使用 工厂 模式的首选方法。类似的方法用于从 JMS 连接工厂获取 JMS 连接。
此处不讨论 驱动程序管理器 方法。它足以说明此方法只是给定连接对象的普通构造器之上的小 层。
除了有效实现特定于数据库的通信协议的 java.sql.Connection
外,还有另外两个专用的 连接 接口:
-
javax.sql.PooledConnection
代表物理连接。您的代码不会与这个池的连接直接交互。反之,使用getConnection ()
方法获取的连接。这种间接允许管理应用服务器级别的连接池。使用getConnection ()
获取的连接通常是代理。当此类代理连接关闭时,物理连接不会关闭,而是在受管连接池中再次可用。 -
javax.sql.XAConnection
允许获取与javax.transaction.TransactionManager
一起使用的 XA 感知连接的javax.transaction.xa.XAResource
对象。由于javax.sql.XAConnection
扩展javax.sql.PooledConnection,它还提供 'getConnection ()
方法,它提供对具有典型 DML/DQL 方法的 JDBC 连接对象的访问。