「JRubyでOracleにアクセスするための方法」
手順
JRubyのサンプルコード
ここでは、Oracleに対して接続を行っています。
#!/usr/bin/env ruby require 'java' begin java.lang.Class.forName('oracle.jdbc.driver.OracleDriver').newInstance con = java.sql.DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:ORCL', 'SCOTT', 'TIGER'); stmt = con.createStatement rs = stmt.executeQuery("select * from emp") while rs.next puts rs.getString(1) end rescue => ex puts ex ensure con.close if con end
感想
これが出来るとわかった時は、正直感動しました。
JavaでJDBC接続を書いたことある人であれば、サンプルコードはすんなり理解できると思います。Javaのコードをほぼそのままコピーしていますから。ここではselectしか書いていませんが、同様にupdateなども行えます。
Javaで書いた時と違い、「main関数不要」「型宣言不要」「ensureでの例外処理不要」「コンパイル不要」という、お手軽さ。Javaの厳密さは確かに素晴らしいですが、ちょっとしたコードを書く場合には、非常に「重い」です。しかし、JRubyであれば、その「重さ」を現実的な範囲で軽くすることが出来ます。Javaのコードをちょっと手直ししただけで、動かせるわけですから、使わない手はないです。
以前、RubyでOracleに接続することは試しましたが、事前準備が面倒だという思いが正直ありました。しかし、今回のJruby+JDBCというのは、前準備を限りなく無くしてくれます。RubyとJavaのthinドライバーによるDB接続というのは、もっと評価されて良いと思う。
JRubyもJavaも、ファイルを展開して、環境変数を設定すればインストールが完了するという手軽さはかなり魅力です。例えば、すでに稼働中のサーバでRubyを使いたい。でもそのためには、稼働中のサーバに対してインストール作業が発生する場合、JRubyであれば、インストールが簡単で、影響範囲も小さいので、リスクがかなり減らせます。RubyとJRubyの互換性がどの程度か、パフォーマンスはどうなのかという問題はありますが、そこが許容できるのあれば、かなり良い解決策になると思います。