データベース(PostgreSQL)との接続
続いて、データベース接続を見てみましょう。Scalaでは、Java用のオープンソース資産を活用できます。今回のPostgreSQL接続においても、JavaのAPI(JDBCドライバ)をそのまま使用します。表4に設定例を掲載します(ここでは、イントラネットワーク経由でIPアドレス192.168.111.111にあるpostgressに接続する例となっていますが、ローカル環境にあるpostgresで試す際には、IPアドレス192.168.111.111 をlocalhostに読み替えてください)。
| PostgreSQLの設定 | |
| バージョン | 8.3.7 |
| インストール先 | 192.168.111.111 |
| 接続先データベース名 | test_db |
| ユーザー名 | test_user |
| パスワード | test_password |
| Java(JRE)のバージョン | |
| バージョン | 1.6.13 |
| JDBCドライバのバージョン | |
| バージョン | JDBC4 PostgreSQL Driver, Version 8.3-604 |
では、実際に接続/切断するプログラムを見てみましょう。
まずは上記「シンプルなScalaプロジェクトの作成」においてMavenで作成したScalaプロジェクトのpom.xmlファイルに、LIST29の内容を追加しましょう。Mavenを使用すると、ライブラリのjarファイルを入手し、コンパイル時にライブラリへのクラスパスを追加する必要がなくなるので便利です。
<dependencies> セクションに以下を追加 <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>8.3-603.jdbc4</version> </dependency>
続いて、¥testApp¥src¥main¥scala¥com¥test_scala_maven¥App.scalaファイルに、LIST30のコードを記述しましょう。
package com.test_scala_maven
object App extends Application {
import java.sql.{DriverManager, Connection}
/**
PostgreSQLに接続する
@retval Connection PostgreSQLへのConnectionオブジェクト
*/
def connectPostgreSQL : Connection = {
println("connectPostgreSQL()")
val connectionString = "jdbc:postgresql://192.168.111.111/test_db?user=test_user&password=test_password"
//PostgreSQL JDBC Driver のロード
Class.forName("org.postgresql.Driver")
//PostgreSQL に接続
DriverManager.getConnection(connectionString)
}
/** PostgreSQLから切断する */
def closePostgreSQL(connection : Connection) = {
println("closePostgreSQL()")
connection.close
}
/** main関数 */
override def main(args:Array[String]) = {
val connection = connectPostgreSQL
closePostgreSQL(connection)
}
}
実行コマンドは次のとおりです。
¥testApp> mvn scala:console -DmainConsole=com.test_scala_maven.App
import文でJDBCドライバクラスの使用をコンパイラに知らせて、connectPostgreSQL関数でJDBCドライバをロードし、接続した戻り値としてConnectionオブジェクトを受け取ります(import文では、「{DriverManager, Connection}」といった形式で中括弧を用いて複数のクラスを一度にインポートしています。その他、Scalaのimport文はJavaのimport文より多様な機能を持っています)。さらにclosePostgreSQL関数にConnectionオブジェクトを渡し、切断しています。Javaの使用経験のある方なら、Javaでの接続方法と同じだということに気付くでしょう。
ScalaからJavaのAPIを呼び出すには、今回と同様にimport文を使用して必要なクラスをインポートし、JavaのAPIリファレンスに書かれているのと同じ方法で、Scalaの文法に従って呼び出します。
この記事は参考になりましたか?
- 新開発言語「Scala」の実体連載記事一覧
-
- Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~補足編
- Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~後編
- Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編
- この記事の著者
-
株式会社パテントビューロ 三木隆史(ミキ タカフミ)
株式会社パテントビューロ所属。マネージャー業務と平行して、Webアプリケーション開発、自然言語系の研究開発を行なう。以前はC言語による組込開発。違和感なくScalaへ移行できたことや、ロジック部分に注力できる生産性の高さに驚いている。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
株式会社パテントビューロ 木村吉博(キムラ ヨシヒロ)
政府系研究機関での研究開発を経て、現在、株式会社パテントビューロにて、プログラミング(知財関連文書(SGML/XML)の変換バッチ処理のScalaでの記述など)を担当している。複雑でイレギュラーな記述も多々見られる大量の文書を相手にする際に、Scalaの書きやすさと高速性とに大いに助けられている。か...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
