さて、そんななか、Playについて叱咤激励していきます。
Java版だとORMにEBeanを使っています。
modelsの中に各モデルを記述していきます。
ここに書いた内容がDBにも反映されます。
例えば
emailを必須項目としたい場合は
@Entity
public class User extends Model {
@Required
public String email;
みたいな感じに書くわけですね。
ちなみにこの中には
public String getEmai() {
return email + "hoge";
}
みたいな事もかけてしまいます。
これやると、 テンプレート側で
user.getEmail()ってやったときとuser.emailってやった時で挙動が変わってしまうので、
注意が必要です。
さて、それとは別に
Modelの中には
static関数もかけてしまいます。
public static List<User> getChildren(){
return Ebean.find(User.class)
.where()
.eq("parentUserId", this.userId)
.findList();
}
みたいな感じですね。
で、これを書いた状態でユーザーのリストをJSONで取ってくるなんてした時には、全てのデータに対してstatic関数の中身も処理した上でJSONを返すため、
必要でないデータは意図的に@JsonIgnoreする必要があります。
おそらくModelの中にはstatic関数は書かなくて別の所で処理したほうがいいんでしょうが・・・。
(phpで使ってたPropelだとPeerがあったし、Slim3だとServiceがあるんだけどなあ・・・)
0 件のコメント:
コメントを投稿