感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Play Frameworkでデータベースを利用するための設定など。

スポンサーリンク

Play Frameworkで使用するデータベースはconf/application.confファイルを編集することで設定できる。
application.confにはデフォルトで以下のような記述がある。

# db.default.driver=org.h2.Driver
# db.default.url="jdbc:h2:mem:play"
# db.default.user=sa
# db.default.password=""

このコメントアウトを外して、以下のようにする。

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"

データベースアクセスのために利用するドライバを指定する。
あと、データベースアクセス先を示すURLを指定している。

次に、Ebeanと呼ばれるPlay Framework内蔵のO/Rマッパーに関する設定を以下で行う。

# Ebean configuration
# ~~~~~
# You can declare as many Ebean servers as you want.
# By convention, the default server is named `default`
#
ebean.default="models.*"

使用するModelクラスの指定をここに記述する。

ちなみに、Play FrameworkでMySQLに接続するための設定はこんな感じ。

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:port/your_db_name?characterEncoding=UTF-8"
db.default.user=your_login
db.default.password=your_pass

PostgreSQLはこんな感じ。

db.default.driver=org.postgresql.Driver
db.default.url=jdbc:postgresql://localhost:9000/Play_Playground_DB

H2を利用する場合はデフォルトで使えるが、MySQLPostgreSQLなどを利用する場合は別途JDBCドライバをダウンロードして、Playアプリケーション内に「lib」というフォルダを作成し、JARファイルを配置する必要がある。

Modelクラスの作成

・@Entityって?
EJBに用意されているJava Persistence APIの機能で、データベースに保管されるデータはEntityとして扱われる。
クラスがエンティティであることを示すのが@Entityアノテーションである。
Modelクラスでは必ずこのアノテーションをつける。

・@Id
Railsにもこんなんあった気がするけど、気のせいかな、ID。@Idは、このアノテーションを記述したフィールドがプライマリキーの項目として扱われることを示す。

appの下にmodelsというパッケージを作成して、こんな感じのModelとなるクラスを作ってみる。

package models;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;

import play.db.ebean.Model;

@Entity
public class Friend extends Model {

	@Id
	public Long id;
	public String name;
	public int age;
	public String message;
	public Date postDate;

	public static Finder<Long, Friend> find = new Finder<Long, Friend>(Long.class, Friend.class);

	@Override
	public String toString() {
		return ("id:" + id + ",name:" + name + ",age:" + age + ",message:" + message + ",postDate:" + postDate);
	}
}

はじめてルートページにアクセスすると、以下のような画面が表示されるので、
f:id:sho322:20140109025521j:plain

「Apply this script now!」をクリックする。
するとデータベースが作成される。

データをインサートしたり、読み出したりするサンプルも作りたかったけれど、本のサンプルどおりやっても無駄だったので、今日はここまで。
明日は以下を参考にして頑張ってみる。
https://github.com/playframework/playframework/tree/master/samples/java/computer-database-jpa/app/controllers

参考

日本語の説明の部分に文句はないですが、いつものことながらサンプルが動きません。
まぁ、慣れっこですが。
デバッグしてメールしたほうがいいのかな?