この記事の所要時間: 928

あ。

ああ。

Play Frameworkには EBean っていうO/Rマッピングのフレームワークが採用されていて・・・って「あぁ」と思った記事はこちら↓↓

Play FrameworkのDB操作を楽にするEBeanの基礎知識 ・・・・ ■ DBテーブルの作成が簡単な「EBean」とは

引用元: Play frameworkのDB操作を楽にするEBeanの基礎知識 1/3 – @IT.

なるほどなるほど。

EBeanを有効にするには application.conf の下記部分をコメントを外す。

ebean.default=”models.*”

その上で、modelsに下記のクラスを作ってみた。
上記引用元の記事とおんなじことしてみる。
ただし、今回、なにかのベースとして作りたいので、「ログイン」させようと思い
テーブル名は「member」クラス名は「Member」となる予定。

[code]package models;

import java.util.Date;

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

import play.db.ebean.Model;

import com.avaje.ebean.annotation.CreatedTimestamp;
import com.avaje.ebean.validation.NotNull;

@Entity
public class Member extends Model {
/**
*
*/
private static final long serialVersionUID = 1L;

@Id
public Long id;

@NotNull
public String name;

@CreatedTimestamp
public Date insertDate;

@Version
public Date updateDate;

public String toString() {
return "Member [id="+id+", name="+name+", insertDate="+insertDate+", updateDate="+updateDate+"]";
}
}[/code]

ここまで作って、いつものように
play run
してみる。
この記事では下記のようになる。

c:devworkspaceplaysampapp>play debug run
Listening for transport dt_socket at address: 9999
[info] Loading project definition from C:devworkspaceplaysampappprojectpro
ject
[info] Loading project definition from C:devworkspaceplaysampappproject
[info] Set current project to app (in build file:/C:/dev/workspace/playsamp/app/

— (Running the application from SBT, auto-reloading is enabled) —

[info] play – Listening for HTTP on port 9000…

(Server started, use Ctrl+D to stop and go back to the console…)

[info] play – database [default] connected at jdbc:mysql://localhost/playsamp?ch
aracterEncoding=UTF8

で・・・
ブラウザで確認・・・・
http://localhost:9000

あれ・・・・
エラー
コンソールも・・・

[error] application – 

! @6bfefgjf4 – Internal server error, for request [GET /] ->

play.api.db.evolutions.InvalidDatabaseRevision: Database ‘default’ needs evoluti
on! [An SQL script need to be run on your database.]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1$$anonfun$a
pply$1.apply$mcV$sp(Evolutions.scala:427) ~[play_2.9.1.jar:2.0.3]
at play.api.db.evolutions.EvolutionsPlugin.withLock(Evolutions.scala:448
) ~[play_2.9.1.jar:2.0.3]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evol
utions.scala:414) ~[play_2.9.1.jar:2.0.3]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evol
utions.scala:412) ~[play_2.9.1.jar:2.0.3]
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.
scala:59) ~[scala language=”-library.jar:0.11.3″][/scala]
at scala.collection.immutable.List.foreach(List.scala:45) ~[scala 1=”y.jar:0.11.3″ language=”-librar”][/scala]

怒られた T_T

あ、そうじゃないのか。
「Apply this script now!」
ってボタンを押したら通常画面に戻った。
MySQLを見てみたらしっかりとテーブルが出来てました。
テーブル

そして member テーブルの中身は・・・
member テーブル中身

member はいいんだけど「play_evolutions」ってなんだ??
今回は、置いておく・・・

実行されたSQLは conf/evolutions/default/1.sql として保存されていました。

ふむふむ、なるほど。

とりあえず、行けそうなので
Application.javaの内容を上述で引用したサイトのソースをそのまま使用させていただいてテストしてみました。
※参考サイト:

Play frameworkのDB操作を楽にするEBeanの基礎知識 2/3 – @IT.

[java]
・・・・前略

public class Application extends Controller {

public static Result index() {
// return ok(index.render(“Your new application is ready.”));

// 1番目を保存
Member member1 = new Member();
member1.name = “新宿太郎”;
member1.save();

// 2番目を保存
Member member2 = new Member();
member2.name = “代々木太郎”;
member2.save();

// 3番目を保存
Member member3 = new Member();
member3.name = “原宿太郎”;
member3.save();

// 現在のMemberを全検索して表示
Finder<Long, Member> finder = new Finder<Long, Member>(Long.class,
Member.class);
List<Member> members = finder.all();

StringBuilder msg = new StringBuilder();
for (Member member : members) {
msg.append(member.toString()).append(“n”);
}
return ok(msg.toString());
}



// 省略
[/java]

そしてブラウザで http://localhost:9000 でGO!

画面表示された。

Member [id=1, name=新宿太郎, insertDate=Tue Aug 28 12:47:21 GMT+09:00 2012, updateDate=Tue Aug 28 12:47:21 GMT+09:00 2012]
Member [id=2, name=代々木太郎, insertDate=Tue Aug 28 12:47:22 GMT+09:00 2012, updateDate=Tue Aug 28 12:47:22 GMT+09:00 2012]
Member [id=3, name=原宿太郎, insertDate=Tue Aug 28 12:47:22 GMT+09:00 2012, updateDate=Tue Aug 28 12:47:22 GMT+09:00 2012]

出来た。

そしたら、とりあえずメンバー追加画面を作ってなんでもかんでも入れられるようにしてみたい。

そこまで書けば完結ですね。

余談ですが、ここでご紹介している記事はわかりやすいです。

下記、連載がすごく参考になりました!

Java開発で泣かないためのPlay frameworkの基礎知識 (1/3) – @IT.

Play frameworkのDB操作を楽にするEBeanの基礎知識 (1/3) – @IT.

Java開発者がScalaでPlay frameworkのビューを作るには (1/3) – @IT.

Play Framework その他の記事

この記事が気に入ったら
いいね ! しよう

Twitter で