Java Database Connectivity (JDBC)

Java™ Database Connectivity (JDBC) は、リレーショナル・データベースと対話式に接続するための Java API です。

以下の表に、 JDBC フィーチャーをリストします。

表 1. JDBC フィーチャー
フィーチャー サポート サポートされる Java バージョン サポートされる Enterprise Java バージョン
jdbc-4.0 JDBC バージョン 4.0
  • Java SE 8
  • Java SE 11
  • Java SE 17 (システム)
  • Java EE 6
jdbc-4.1 JDBC バージョン 4.1
  • Java SE 8
  • Java SE 11
  • Java SE 17 (システム)
  • Java EE 6
  • Java EE 7
jdbc-4.2 JDBC バージョン 4.2
  • Java SE 8
  • Java SE 11
  • Java SE 17 (システム)
  • Java EE 6
  • Java EE 7
  • Java EE 8
  • ジャカルタ EE 8
  • Jakarta EE 9
  • Jakarta EE 10
jdbc-4.3 JDBC バージョン 4.3
  • Java SE 11
  • Java SE 17 (システム)
  • Java EE 6
  • Java EE 7
  • Java EE 8
  • ジャカルタ EE 8
  • Jakarta EE 9
  • Jakarta EE 10
cicsts:jdbc-1.0 Db2® タイプ 2 接続用の CICS Support for JDBC
  • Java SE 8
  • Java SE 11
  • Java SE 17 (システム)
  • Java EE 6
  • Java EE 7
  • Java EE 8
  • ジャカルタ EE 8
  • Jakarta EE 9
  • Jakarta EE 10

JDBC サポートの構成について詳しくは、 JDBCを参照してください。

データベース対話を使用したアプリケーションの開発

Db2 データベースと対話するには、2 つの方法があります。

データ ソース

javax.sql.DataSource は、 dataSource または cicsts_dataSource 構成エレメントで定義された jndiName を使用して JNDI で検索できます。 この 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 SQLJ DriverManagerを使用したデータソースへの接続を参照してください

Liberty JDBC フィーチャーと CICS JDBC フィーチャーの相違点

Liberty には、さまざまなリレーショナル・データベースに接続するための JDBC フィーチャー jdbc-4.0jdbc-4.1jdbc-4.2、および jdbc-4.3 が用意されています。 CICS Liberty では、Liberty JDBC サポートを使用して、タイプ 2 接続の CICS DB2CONN を介して、またはタイプ 4 接続のリモートで、 Db2 データベースに接続できます。 Liberty JDBC は、 java.sql および javax.sql API をサポートし、 dataSource 構成を介して javax.xml.DataSource の実装を提供します。

CICS には、 CICS DB2CONNを介したタイプ 2 接続をサポートするための JDBC フィーチャー cicsts:jdbc-1.0 が用意されています。 CICS は、 java.sql API をサポートし、 cicsts_dataSource 構成を介して javax.sql.DataSource の実装を提供します。
注: cicsts_dataSource は、 dataSourceと完全には互換性がありません。 一部の Liberty フィーチャーでは、 dataSourceを使用する必要があります。 例えば、 batch-1.0 パーシスタンスには dataSource を使用する必要があります。

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 タスクがコミットまたはロールバックするときにコミットまたはロールバックされます。

表 2. JDBC トランザクションの相違点
Type 接続タイプ 自動コミット デフォルトのクリーン動作
CICS JDBC タイプ 2 false CICS UOW をコミットします。
Liberty JDBC タイプ 2 false CICS UOW をロールバックします。
タイプ 4 true または false ローカル・トランザクションをコミットします。 CICS UOW は影響を受けません。

グローバル・トランザクションを使用して、トランザクション・スコープのデータ・ソースを管理できます。 グローバル・トランザクションでは、Liberty と CICS javax.sql.DataSource のトランザクション動作は一貫しています。 Liberty でのグローバル・トランザクションについて詳しくは、 Java Transaction API (JTA)を参照してください。

jndiName jdbc/defaultCICSDataSourceを指定した dataSource または cicsts_dataSource 構成を使用して、 javax.sql.DataSource インターフェースでデータベースに接続する。
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
        }
    }
}
cicsts_jdbcDriver 構成を使用する 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
        }
    }
}