2 Oracle DatabaseでのJavaの使用

Javaアプリケーションでは、リレーショナル・データベースのデータのアクセスおよび操作に、Java Database Connectivity(JDBC)標準が使用されます。

業界標準のアプリケーション・プログラミング・インタフェース(API)であるJDBCを使用すると、JavaからSQLを使用してRDBMSにアクセスできます。JDBCは、JDBCエスケープ標準のエントリ・レベルに準拠しています。ベンダー各社はそれぞれ独自の拡張を含めたJDBC仕様を実装しています。

ユニバーサル接続プール(UCP)は、接続を再利用するためにデータベース接続オブジェクトをキャッシュするために使用する接続プールです。これにより、パフォーマンスが向上します。

データベースにおけるJava(OJVM)により、Javaデータ・ロジックを使用してSQL操作をグループ化し、インプレース処理用にデータベースにロードできます。

この章では、Oracle Database 12cリリース2(12.2)とともにJDBCドライバ、ユニバーサル接続プール(UCP)およびデータベースにおけるJava(OJVM)について説明します

  • Java Database Connectivityドライバ(JDBC)
  • ユニバーサル接続プール(UCP)

  • データベースにおけるJava(OJVM)

2.1 Java Database Connectivityドライバ(JDBC)

JDBCは、ユーザーがデータベースに接続してSQL文を実行し、データベースに問合せできるようにするデータベース・アクセス・プロトコルです。JDBCドライバは、最新のJDBC仕様に準拠して実装されています。Javaアプリケーションは、クラスパスにJDK8と互換性のあるojdbc8.jarが必要です。

コアJavaクラス・ライブラリには、JDBC APIのjava.sqljavax.sqlが用意されています

次の項では、JDBC標準に対するOracleサポートについて説明します。

  • Oracle JDBC Thinドライバ

  • Oracle JDBCパッケージ

Oracle JDBC Thinドライバ

ほとんどの場合、JDBC Thinドライバを使用することをお薦めします。JDBC Thinドライバは、適切なJava仮想マシンを搭載したシステムであれば、どのシステム上でも機能します。(JVM)Oracleが提供する他のクライアント・ドライバとして、JDBC Thinドライバ、Oracle Call Interface (OCI)ドライバ、サーバー側Thinドライバ、サーバー側内部ドライバなどがあります。

JDBC Thinドライバは、Pure JavaのType IVドライバです。JDBCドライバ・バージョン(ojdbc8.jar)には、JDK 8のサポートが含まれています。

JDBC Thinドライバは、データベースにアクセスするためにSQL*Netを使用してサーバーと通信します。

関連項目:

『Oracle Database JDBC開発者ガイド』

2.2 ユニバーサル接続プール

接続プールは、接続オブジェクトを再利用して、接続オブジェクトが作成される回数を減らすことで、パフォーマンスを向上させます。

Oracle Universal Connection Pool (UCP)は、Oracle Database構成との密接な統合を利用して、高可用性、スケーラビリティ、ロード・バランシングとともに接続プール機能を提供する、機能豊富なJava接続プールです。

UCPを使用するには、Javaアプリケーションまたはコンテナのクラスパスにucp.jarojdbc8.jar (JDK8)が必要です。

関連項目:

Oracle Universal Connection Pool開発者ガイド

2.3 データベースにおけるJava(OJVM)

Oracle Databaseには、サーバーに常駐するJava仮想マシン(JVM)があります。それによって、サーバー上のOracle JVM内で実行中のJavaアプリケーションから、同じシステムおよび同じプロセスに存在するデータにアクセスできます。

データ処理が大きいアプリケーションには、データベースにおけるJavaをお薦めします。JVMは、基礎となるOracle RDBMSライブラリを直接使用する機能があり、JavaコードとSQLデータの間にネットワーク接続が必要ありません。そのため、パフォーマンスと実行が向上します。データ・アクセスのために、サーバー上でJavaコードを実行するとき、Oracle Databaseはサーバー側内部ドライバを使用します。