Play framework

データベースの使用2

  • 実際のデータベース操作について。

目次

JPA

  • Play!では、O/Rマッピングの標準的APIのJava Persistence API(JPA)を採用。
  • JPA実装としてHibernateフレームワークを使用する。

Modelクラス

  • ユーザ情報を扱うエンティティにマッピングするクラスの例
    package models;
     
    import java.util.*;
    import javax.persistence.*;
     
    import play.db.jpa.*;
     
    @Entity
    public class User extends Model {
     
        public String email;
        public String password;
        public String fullname;
        public boolean isAdmin;
        
        public User(String email, String password, String fullname) {
            this.email = email;
            this.password = password;
            this.fullname = fullname;
        }
     
    }
    ※公式サイトのチュートリアル、yabeプロジェクトサンプルより
  • Modelクラスの継承は必須ではないが、JPA周りの様々なものを簡便化することができるらしい。
  • @Entityアノテーションは、このクラスがJPAエンティティであることを示す。
  • このクラスの全てのフィールドは自動的にデータベース上に永続化される。(手動でテーブル作成スクリプトを流す必要がない)
  • 通常、データベースにはクラス名と同名のテーブルが作成される。異なる名前のテーブルとしたい場合は、@Table(name= "他の名前" )アノテーションを記述する。

JUnitによるテスト

  • 先ほどのサンプルクラスの動作を確認するため、JUnitによるテストを利用してみる。
  • test/BasicTest.javaにテスト用のプログラムを記述する。
  • デフォルトテストは消してしまってOK
  • 新規にユーザを作って検索するテストを作成する。(チュートリアルより)
        @Test
        public void createAndRetrieveUser() {
    
            // ユーザを作成して保存
            new User("test@example.com","secret","test").save();
    
            // Emailで検索して最初にヒットしたものを取得
            User person = User.find("byEmail", "test@example.com").first();
    
            // 検証
            assertNotNull(person);
            assertEquals("test", person.fullname);
    
        }
    .save()や.find()は、Modelクラスが提供する機能。
  • テストはブラウザから、http://localhost:9000/@tests を開いて行う。テスト項目がいくつか表示されるので、上記で用意したBasiTestを選んで、[Start!]をクリックする。
  • assertに引っかからず正常にメソッドが終了できればテストOKという判断。
  • テスト前に実行して欲しい前処理がある場合は、別途メソッドを作成して「@Before」を付ける。

アノテーション

良くわからない

@LobBlob または Clob に永続化する。
@OneToOne1 対 1 の関係
@ManyToOne多対 1 の関係
@OneToMany1 対多関係

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-12-09 (金) 15:27:59 (4512d)