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 Query all() {
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 件のコメント:
コメントを投稿