#データベースについて
そもそもデータベースとは?は以下参照。
https://www.sejuku.net/blog/8763#i-4
アプリケーションを作成するに当たってデータベースの設計はかなり重要。
##H2について
プレイフレームワークでは、H2(H2 Data Base Engine)と呼ばれるデータベースプログラムが組み込まれている。
#データベースを使用するための設定について
##application.confの設定方法
まずは、アプリケーションがDBを使用出来るようにする。設定方法は以下の通り。
設定項目=値
###application.confに追記するコード
・#から始まっているコードはコメント
・以下のコードを追加する
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
ebean.default="models.*"
###設定項目の解説
追加してない部分も含めて解説。
db.default.driver
→データベースアクセスのために、利用するドライバを指定するものです。ここでは一般的にJavaのクラスを指定する。
db.default.url
→データベースのアクセス先を示すURLを指定する。「jdbc.〇〇」という形で指定する。
db.default.user
→H2では使用しないが、クライアント・サーバ方式のデータベース利用の際用いる。利用者名を記載する。
db.default.password
→H2では使用しないが、クライアント・サーバ方式のデータベース利用の際用いる。パスワードを記載する。
ebean.default
→O/Rマッパーに関する内容を記述する。
##データベースを呼び出すための設定方法
データベースの呼び出し方法は大きく2パターンある。
・ドライバファイルに記述する方法
→データベースにアクセスするファイル
http://www.atmarkit.co.jp/ait/articles/0106/26/news001.html
・ビルドツールを使用する方法
→ドライバへのアクセスも含め、自動でアプリケーションが動く状態にするツール
(ビルドとは)https://qiita.com/Mura-Mi/items/225825cc3715dc04d923
プレイフレームワークは「sbt」というビルドツールを使って、データベースのアクセスに必要なツールをダウンロードする。
##設定追記方法
以下の様に、アプリケーションで使用している項目を、seqの後でカンマで区切って記載する。
libraryDependencies ++= Seq(項目1,項目2・・・・・)
###設定追記後のsbtのコードの内容
name := "PlayApp"
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache
)
play.Project.playJavaSettings
#データベースの作成について
プレイアプリケーションでは、Modelクラスに具体的なテーブルの内容を定義する事で
実行時に自動的にテーブルを用意する事が出来る。
##Modelクラスの作り方
appというフォルダ内に、modelsというフォルダを作成する。
フォルダ内にMessage.javaというファイルを作成する。
###記載方法
public class クラス名 extends Model{
//保管するフィールドの定義
}
###コード全体
package models;
import java.util.Date;
import javax.persistence.*;
import javax.validation.*;
import play.data.validation.*;
import play.db.ebean.*;
@Entity//①
public class Message extends Model{//②
@ID//③
public Long id;
public String name;
public String mail;
public String message;
public Date postdate;
}
①エンティティクラスである事を記述する。
(エンティティクラスについて参考)http://itdoc.hitachi.co.jp/manuals/link/cosmi_v0870/APKC/EU070254.HTM
②Modelというクラスを継承する事で、データベースとしての機能を保有する事が出来る。
③@IDと書かれた下にあるフィールドがプライマリキーとして扱われる。
##その他クラスの変更
Application.java
package controllers;
import play.*;
import play.mvc.*;
import views.html.*;
public class Application extends Controller {
//ルートにアクセスした際のAction
public static Result index(){
return ok(index.render("データベースのサンプル"));
}
}
index.scala.html
@(msg:String)
@main("Sample page") {
<h1>Hello!</h1>
<p>@msg</p>
}