Seita developer blog

ユーザ企業に努めるアプリケーションエンジニアがプログラミング、データベース、OS、SNS、ガジェットなどを中心に備忘録変わりに書いていきます。

【Oracle/Java】JDBCドライバーによるOCIとThinの違いについて

JavaOracleに接続する際に使用する「JDBCドライバー」のOCI接続、Thinクライアント接続の違いについて紹介します。

 

[そもそもJDBCとは]

JDBCとは、「Java」と「リレーショナルデータベース(RDBMS)」間の接続を行うためのAPIです。

そのなかで、Oracleに接続するJDBCには接続方法が2つ存在します。

 

f:id:rey1229:20160531173101p:plain

 

 

[OCIとThinの違い]

 ■OCI

Oracleクライアントのライブラリを利用して接続する方式

前提:Oracleクライアント

   JDBCドライバー

 実行時にOCIのライブラリ(インストールディレクトリの「lib」以下)が必要で、実質的にOracle Clientがインストールされているマシンでしか使用することができません。

引用:(補足)Oracleへの接続 | TECHSCORE(テックスコア)

 

■Thin

Javaのライブラリのみを利用して接続する方式

前提:JDBCドライバーのみ

 クラスライブラリだけで動作する事ができるので、Oracle Clientがインストールされていないマシンでも動作させる事が可能です。

引用:(補足)Oracleへの接続 | TECHSCORE(テックスコア) 

f:id:rey1229:20160602101704p:plain

 

[どっちを使えばいいの?]

昔はどの端末にもOracleクライアントを導入していた経緯から、OCIを採用する例が多かったですが、最近の傾向としては「pure Java」で動くThinが主流となりつつあります。

「OCIのほうが早い」と聞いたことがありますが、ソースがなかったです。。

 

[乗り換えには?]

JDBCドライバーを利用するアプリケーションの場合、JavaEEアプリばかりかと思います。

ですので、APサーバのコネクションプールの設定変更のみで対応できます。

アプリ影響は経験則になりますが、ないかと思われます。

 

Tomcat でコネクションプール

 

<参考>

(補足)Oracleへの接続 | TECHSCORE(テックスコア)

 

Oracle JDBC OCIとThinの違いについて - log4jk

 

Oracle Javaロードマップ: JDBC

 

<愛読書>