= DBアクセス = Playでは単一のデータベースの存在を前提としており、それに従うのであれば簡単にデータベースの変更を取り扱うことができる。 JPA経由でHibernateを使う方法や、複数のデータベースや、GAE等を利用することはここでは考えない。 == エボリューションスクリプト == エボリューションスクリプトは、データベースの変更方法をsqlとして記述しておくことによりplayがその面倒を見てくれるというものである。 [[http://playdocja.appspot.com/documentation/1.2/evolutions]] エボリューションスクリプトのディレクトリは「プロジェクトトップ/db/evolutions」となっているが、このディレクトリはデフォルトインストールでは作成されていないので、自分で作成する必要がある。 == エボリューションスクリプトによらない方法 == エボリューションスクリプトによる方法は大変便利ではあるが、実用的ではない。 開発過程におけるデータベース構造変更時はこれで十分だが、実運用後に変更する場合には、既にあるデータを別テーブルあるいは別データ形態に変換する必要が出てくる(例えば、複数のテーブルデータだったものをまとめて直列化データにしBLOBに入れるなど)。 この場合には当然SQLの記述では不十分である。どうしても自力でデータベース構造の変更とデータの処理を行う必要が出てくる。 playには「起動時に実行するジョブ」の定義機能があるので、これを使う。 [[http://playdocja.appspot.com/documentation/1.2/jobs]] まず、どのようなパッケージ名、どのようなファイル名、どのようなクラス名でもよいので、次のような記述を行う。 {{{ import play.jobs._ @OnApplicationStart class StartJob extends Job { override def doJob { println("startup!!!") .... } } }}} あとは、データベース変更に必要な記述をすればよい。 ただし、注意点としては、「開発モード」では、システム起動時だけではなく、任意のタイミングでこれが呼び出されてしまう可能性があること。