第 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 方法的访问。