このエントリはPlay frameworkひとりアドベントカレンダーの9日目です。
今日からDB(RDB)を使ってみましょう。
なんだかいろいろ方法があるみたいですが、なんか色いろあるとややこしいので詳細は割愛。
あれもできるこれもできるではなくて、EBeanでやる一本でいきます。
いろいろな方法は上級者がやればよろしい。
というわけで PlayframeworkでのDB操作をはEBean と覚えましょう。
confの設定
application.conf
をちょちょっといじります。
別途ドライバが必要な場合はもうちょっといじるので下記参照。
↓の2箇所をコメントアウトして play run
すればおしまい。
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
→これでインメモリHDBを使えるようになります
ebean.default="models.*"
→これで models.*
なクラスがmodelとして認識されます
modelを作る
models
パッケージに作成するmodels.Model
を継承するEntity
アノテーションを付与する
というクラスを作ればokです。
IDも含めまるっとテンプレとして覚えちゃいましょう。
package models;
import javax.persistence.Entity;
import javax.persistence.Id;
import play.db.ebean.Model;
@Entity
public class Twowa extends Model {
@Id
public Long id;
}
他の項目はあとで書きます。明日から本気出す。
アクセスしてみる
前回の残骸である http://localhost:9000/push
にアクセスしてみます。
何やら怪しいメッセージが出ました。
これは evolution
なるものがスキーマ定義がないと警告してくれています。
ここは素直に Apply this script now!
しましょう。
evolution!
って心のなかでつぶやくといいと思います。
すると…特に何も表示されません。
日本は古来から 便りがないのはよい便り と言いますし、エラーが出てなければたぶん成功してます。
ここはひとまずよしとしましょう。
MySQLなどを使う場合の特別な設定
MySQLなどを使う場合はJDBCライブラリの場所を指定してやると sbt
なるものがどこかから持ってきてくれるようです。
というわけでまずは… application.conf
の設定例はこちら。
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://127.0.0.1:3306/twowatter?useUnicode=true&characterEncoding=UTF-8"
db.default.user=isucon2app
db.default.password=isunageruna
ちなみにこの部分はHDBでもMySQLでも同じ。
ebean.default="models.*"
そしてこれに加えて、 /project/Build.scala
をごにょっとします。
具体的には、// Add your project dependencies here,
の下に
"mysql" % "mysql-connector-java" % "5.1.20"
と追加します。
追加した後の例がこちら。
import sbt._
import Keys._
import PlayProject._
object ApplicationBuild extends Build {
val appName = "twowatter"
val appVersion = "1.0-SNAPSHOT"
val appDependencies = Seq(
// Add your project dependencies here,
"mysql" % "mysql-connector-java" % "5.1.20"
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
// Add your own project settings here
)
}
この状態で play reload
して play run
するとうまいことやってくれます。
なんで今回だけ play reload
せにゃならんのだという気がしますので、面倒くさい方は常に Ctrl+D
してから play run
するようにしてもいいと思います。
ともあれこうすると足りてないライブラリをダウンロードしてくれます。あらま便利!
・・・というわけで今日でDBを使う準備ができたので、明日からちゃんとDB使います。
明日から本気だすって言ったしね。