Play! 1.2.1
Play!のGAEモジュール 1.4
Play!のsienaモジュール 1.5
これらの環境がインストール済みであること。
さてさて。今回はPlay! でsienaを使ってdatastoreを使ってみよう。
この辺りがクリアできれば、GAEでBigTableが使えるようになるはずだ。
と、いうことでまずはローカル環境で実験。
application.confに以下の記述を追加する。
# The siena module
module.siena=${play.path}/modules/siena-1.5
これで準備完了!
app/models配下に、Comment.javaクラスを作成する。
package models; import siena.*; @Table("Comment") public class Comment extends Model { @Id(Generator.AUTO_INCREMENT) public Long id; @Column("Comment_Value") @Max(200) @NotNull public String commentValue; public static Queryall() { return Model.all(Comment.class); } }
@Table、@Column、@Maxといったアノテーションは、BigTableに対しての定義になるみたい。
@Idアノテーションがついたフィールドがキーになるようだ。Id値は自動採番。
Model クラスを継承することで、sienaとしてinsert, update, deleteといったメソッドが使えるようになる。
これでModelクラスの定義が完了。
基本的にはこいつに対して操作してやることで、datastoreが触れるはず。
さっそくテストを書いてみよう。
test/ 配下にあるBasicTest.javaにテストを追記。
import org.junit.*; import java.util.*; import play.test.*; import models.*; public class BasicTest extends UnitTest { @Test public void aVeryImportantThingToTest() { assertEquals(2, 1 + 1); } @Test public void sienaTest() { Comment cm = new Comment(); cm.commentValue = "テスト"; cm.insert(); //insertが成功したかのテスト List<comment> getList = Comment.all().fetch(); assertEquals(getList.get(0).commentValue,"テスト"); //後片付けにデータを削除(ついでにデータ更新のテストも兼ねる) for(Comment deleteKeys :getList) { Comment delcm = new Comment(); //データ更新のテスト delcm.id = deleteKeys.id; delcm.commentValue = "更新されてる?"; delcm.update(); List<comment> afterUpdateList = Comment.all().filter("id",delcm.id).fetch(); assertEquals(afterUpdateList.get(0).commentValue,"更新されてる?"); delcm.delete(); } //削除ができていれば、fetch結果は0件のはず List<comment> afterDeleteList = Comment.all().fetch(); assertEquals(afterDeleteList.size(),0); } }
さきほど作ったCommentクラスのインスタンスを生成し、commentValueに値を設定。
insertメソッドを呼び出す。
これで、datastoreに値が保存されたはず。
getList
あとは後片付けでデータ削除。ついでにupdateとdeleteのテストもやっておく。
これでテストを実行!!
0 件のコメント:
コメントを投稿