モデル
Play! では、O/R マッパーとして Java Persistence API (JPA) を採用しているため、 モデルクラスは JPA を用いて定義していきます。 なお、JPA 実装として Hibernate を採用しています。
モデルクラスの要件
Play! におけるモデルは以下の要件を満たす必要があります。
@javax.persistence.Entity
アノテーションが付与されているplay.db.jpa.Model
を継承する- 厳密には必須要件ではない
- ID フィールドが自動付与される、便利なヘルパーメソッドが使えるなどのメリットがあるので、基本は継承すること
モデルクラスの定義
モデルクラスを定義する場合は、以下のように記述します。
@Entity
public class User extends Model {
public String name;
public String email:
}
Play! では、フィールドの getter/setter を明示的に記述せず、public なフィールドとして定義しておくと、 実際に動作する際に、Play! が自動的に getter/setter を付与します。
つまり、実際に動作する場合は以下のコードの状態となっています。
@Entity
public class User extends Model {
public String name;
public String email:
public String getName() {
return name;
}
public void setName(String name) {
this.name = name
}
...
}
明示的に getter/setter を定義した場合、Play! は getter/setter を自動生成せず、そちらのメソッドを利用する動きになります。
モデルの CRUD
play.db.jpa.Model
を継承しておくことで、モデルの CRUD (Create, Read, Update, Delete) 操作を簡単に行うことが可能です、
// 検索
User. findById(1L);
User.find("name", "yamada").fetch();
User user = new User();
// 登録 or 更新
user.save();
// 削除
user.delete();