Play Framework 2.3 For Java ことはじめ #3 データベース接続(JDBC)編
Play Framework 2.3 For Java 入門記事一覧
今回は第3回です。
Webアプリケーションといえばやっぱりデータベースはなくてはならない存在です。とりあえずデータベースに接続できなきゃ始まらない。
ってことで、やってみます。まずは、基本を理解したいので、ORMは使わずにJDBCでやります。公式チュートリアルにもJDBCの接続の仕方も書いてあったのですんなりできた。
1. データベース(postgreSQL)の準備
データベースはpostgreSQL。postgreSQLのデータベースはlocalhostに既に作られている前提。データベース名はsample
でユーザー名はtest
、パスワードはpassword
とでもしておきましょう。
データベースには、member
というテーブルがあって、名前とEmailだけを持ってるとします。データは適当にinsertしておく。
create table member ( name varchar(255), email varchar(255) ); insert into member values ('hoge', 'hoge@example.com'), ('fuga', 'fuga@example.com');
余談ですが、実はpostgreSQLを使うのは今回が初めて。show databases
が\l
だったり、AUTO INCREMENT
がシーケンスを作るみたいなやり方だったりとかスキーマの考え方が微妙に異なってたりと知らないことたくさんあって困ったw
2. application.confを書き換える
play-java
テンプレートから作ったアプリに直接手を加えていきます。
チュートリアルによるとbuild.sbtにjavaJdbc
追加しろって書いてあったけど、既にあったからそれはパス。
apllication.confにpostgresSQLのDBの設定を書く。
db.default.driver=org.postgresql.Driver db.default.url="jdbc:postgresql://127.0.0.1/sample" db.default.user=test db.default.password="password"
3. JDBCでmemberを取得する処理を書く
とりあえず試したいだけなので、controllers/Application.java
に処理を書いていく。
まずはimportして、
import play.db.*;
indexメソッドのreturnの前にDBに接続する処理を書く。
ふむ。DB.getConnection()
ってするだけでうまいことやってくれるんだね。
Connection connection = DB.getConnection(); try { PreparedStatement sql = connection.preparedStatement("select * from member"); ResultSet rs = sql.executeQuery(); while (rs.next()) { System.out.println(rs.getString("name") + ":" + rs.getString("email")); } } catch (SQLException e) { e.printStatckTrace(); }
さぁ、これでいいだろうと思って実行するとエラーが出てて真っ赤な画面。
なにやら、postgreSQLのドライバーを指定してるけど、そんなものないよと言われてる。
公式ページ見ると、MySQLの場合は、libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.18"
を追加しろよ書いてある。
ああ、postgreSQLもそういうの持ってこなきゃいけないのか。
依存関係だから、maven postgresql
とかで、ググったら、Maven Repository: org.postgresql » postgresqlにたどりつく。色々バージョンがあるっぽいが、この方のブログを参考にすると JDK7以降は、41を使えばいいっぽい!
なので、build.sbtに次の行を追記する。"org.postgresql" % "postgresql" % "9.3-1101-jdbc41"
これで、サーバー止めて、再びrun。そして、ブラウザをリロードしてみたら、、、
無事成功!
コンソールには、データベースの内容がprintlnされてます。
まとめ
JDBC接続もさらっとうまくいきました。この調子で第4回はPlayの一番標準っぽいORMであるEBeanで接続してみます。第4回はこちら -> Play Framework 2.3 For Java ことはじめ #4 データベース接続(EBean)編