Java 数据库连接 (JDBC)
Java 数据库连接 (JDBC) 是用于与关系数据库进行连接和交互的 Java API。
下表中列出了 JDBC 功能部件:
| 功能 | 支持 | 受支持的 Java 版本 | 受支持的企业 Java 版本 |
|---|---|---|---|
jdbc-4.0 |
JDBC 版本 4.0 |
|
|
jdbc-4.1 |
JDBC 版本 4.1 |
|
|
jdbc-4.2 |
JDBC 版本 4.2 |
|
|
| jdbc-4.3 | JDBC 版本 4.3 |
|
|
cicsts:jdbc-1.0 |
CICS® 支持 JDBC Db2® 类型 2 连接 |
|
|
有关配置 JDBC 支持的更多信息,请参阅 使用 JDBC配置数据库连接。
使用数据库交互开发应用程序
有两种方法可与 Db2 数据库进行交互。
- 数据源
可以使用 dataSource 或 cicsts_dataSource 配置元素中定义的 jndiName 在 JNDI 中查找
javax.sql.DataSource。 此javax.sql.DataSource对象可用于获取java.sql.Connection对象以与数据库进行交互。根据
javax.sql.DataSource的实现,在关闭之前落实或回滚连接可能很重要。 有关更多信息,请参阅 Liberty JDBC 功能部件与 CICS JDBC 功能部件之间的差异。- 驱动程序管理器
java.sql.DriverManager类可用于获取java.sql.Connection以与数据库进行交互。 CICS类型2连接的URL 为jdbc:default:connection。 有关更多信息,请参阅使用 IBM Data Server Driver for JDBC and SQLJDriverManager 接口连接到数据源
Liberty JDBC 功能部件与 CICS JDBC 功能部件之间的差异
Liberty 提供了 JDBC 功能部件 jdbc-4.0, jdbc-4.1, jdbc-4.2和 jdbc-4.3 以连接到各种关系数据库。 在 CICS Liberty 中, Liberty JDBC 支持可用于通过类型为 2 的 CICS DB2CONN 连接到 Db2 数据库,或者远程连接到类型为 4 的连接。 Liberty JDBC 支持 java.sql 和 javax.sql API ,并通过 dataSource 配置提供 javax.xml.DataSource 的实现。
cicsts:jdbc-1.0 ,以支持通过 CICS DB2CONN进行类型 2 连接。 CICS 支持 java.sql API ,并通过 cicsts_dataSource 配置提供 javax.sql.DataSource 的实现。batch-1.0 持久性。CICS 和 Liberty JDBC 支持使用 JDBC API 的事务。 对于 JDBC 类型 2 连接, Db2 更新作为 CICS 工作单元的一部分通过 CICS DB2CONN 资源进行管理。 Liberty 和 CICS JDBC 在管理连接的方式上有所不同。
自由JDBC处理完成后将自动关闭连接,导致事务回滚或提交,具体取决于commitOrRollbackOnCleanup的属性dataSource元素。 默认设置为rollback,因此隐含的java.sql.Connection.commit()必须调用,导致CICS要提交的工作单元。
CICS JDBC 由 CICS 工作单元管理。 当 CICS 任务落实或回滚时,将落实或回滚数据库更新。
| 类型 | 连接类型 | autoCommit | 缺省清除行为 |
|---|---|---|---|
| CICS JDBC | 类型 2 | false |
落实 CICS UOW。 |
| 自由 JDBC | 类型 2 | false |
回滚 CICS UOW。 |
| 类型 4 | true 或 false |
落实本地事务。 CICS UOW 不受影响。 |
可以使用全局事务来管理事务作用域数据源。 在全局事务中, Liberty 和 CICS javax.sql.DataSource 的事务行为一致。 有关 Liberty 中全局事务的更多信息,请参阅 Java 事务 API (JTA)。
示例
使用javax.sql.DataSource 接口连接到数据库,使用 dataSource 或 cicsts_dataSource 配置指定 jndiName jdbc/defaultCICSDataSource。import java.sql.Connection;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.sql.DataSource;
public class DataSourceExample
{
// Inject the DataSource resource using JNDI
@Resource(name = "jdbc/defaultCICSDataSource")
private DataSource dataSource;
public void accessDb() throws SQLException
{
try(Connection conn = dataSource.getConnection())
{
// Interact with SQL using the Connection object
}
}
}java.sql.DriverManager 类连接到数据库。import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DriverManagerExample
{
public void accessDatabase() throws SQLException
{
try(Connection conn = DriverManager.getConnection("jdbc:default:connection"))
{
// Interact with SQL using the Connection object
}
}
}