SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新開発言語「Scala」の実体

Javaの限界を超えて実用化を目指す
新開発言語「Scala」のメリットとは~後編

キーワードは手軽さと拡張性

  • X ポスト
  • このエントリーをはてなブックマークに追加

データベース(PostgreSQL)との接続

 続いて、データベース接続を見てみましょう。Scalaでは、Java用のオープンソース資産を活用できます。今回のPostgreSQL接続においても、JavaのAPI(JDBCドライバ)をそのまま使用します。表4に設定例を掲載します(ここでは、イントラネットワーク経由でIPアドレス192.168.111.111にあるpostgressに接続する例となっていますが、ローカル環境にあるpostgresで試す際には、IPアドレス192.168.111.111 をlocalhostに読み替えてください)。

表4:PostgreSQLとJDBCドライバの設定
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ファイルを入手し、コンパイル時にライブラリへのクラスパスを追加する必要がなくなるので便利です。

LIST29
<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のコードを記述しましょう。

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の文法に従って呼び出します。

次のページ
簡単なデータ操作

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
新開発言語「Scala」の実体連載記事一覧

もっと読む

この記事の著者

株式会社パテントビューロ 三木隆史(ミキ タカフミ)

株式会社パテントビューロ所属。マネージャー業務と平行して、Webアプリケーション開発、自然言語系の研究開発を行なう。以前はC言語による組込開発。違和感なくScalaへ移行できたことや、ロジック部分に注力できる生産性の高さに驚いている。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

株式会社パテントビューロ 木村吉博(キムラ ヨシヒロ)

政府系研究機関での研究開発を経て、現在、株式会社パテントビューロにて、プログラミング(知財関連文書(SGML/XML)の変換バッチ処理のScalaでの記述など)を担当している。複雑でイレギュラーな記述も多々見られる大量の文書を相手にする際に、Scalaの書きやすさと高速性とに大いに助けられている。か...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4476 2009/11/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング