Locked History Actions

Diff for "Play/DB"

Differences between revisions 2 and 3
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:

== エボリューションスクリプト ==

エボリューションスクリプトは、データベースの変更方法をsqlとして記述しておくことによりplayがその面倒を見てくれるというものである。

[[http://playdocja.appspot.com/documentation/1.2/evolutions]]

エボリューションスクリプトのディレクトリは「プロジェクトトップ/db/evolutions」となっているが、このディレクトリはデフォルトインストールでは作成されていないので、自分で作成する必要がある。

== エボリューションスクリプトによらない方法 ==

エボリューションスクリプトによる方法は大変便利ではあるが、実用的ではない。
開発過程におけるデータベース構造変更時はこれで十分だが、実運用後に変更する場合には、既にあるデータを別テーブルあるいは別データ形態に変換する必要が出てくる(例えば、複数のテーブルデータだったものをまとめて直列化データにしBLOBに入れるなど)。

この場合には当然SQLの記述では不十分である。どうしても自力でデータベース構造の変更とデータの処理を行う必要が出てくる。



DBアクセス

Playでは単一のデータベースの存在を前提としており、それに従うのであれば簡単にデータベースの変更を取り扱うことができる。 JPA経由でHibernateを使う方法や、複数のデータベースや、GAE等を利用することはここでは考えない。

エボリューションスクリプト

エボリューションスクリプトは、データベースの変更方法をsqlとして記述しておくことによりplayがその面倒を見てくれるというものである。

http://playdocja.appspot.com/documentation/1.2/evolutions

エボリューションスクリプトのディレクトリは「プロジェクトトップ/db/evolutions」となっているが、このディレクトリはデフォルトインストールでは作成されていないので、自分で作成する必要がある。

エボリューションスクリプトによらない方法

エボリューションスクリプトによる方法は大変便利ではあるが、実用的ではない。 開発過程におけるデータベース構造変更時はこれで十分だが、実運用後に変更する場合には、既にあるデータを別テーブルあるいは別データ形態に変換する必要が出てくる(例えば、複数のテーブルデータだったものをまとめて直列化データにしBLOBに入れるなど)。

この場合には当然SQLの記述では不十分である。どうしても自力でデータベース構造の変更とデータの処理を行う必要が出てくる。