あ。
ああ。
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
してみる。
この記事では下記のようになる。
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
! @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 はいいんだけど「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=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.