Play Scala周りで出てくるよくわからん単語を整理していく
Scalaを触ってると聞いたことない単語がバンバン出てくる。
参考となるドキュメントを漁ってみても、Java上がりの人向けに書いてる記事が多く、
業務でJavaを使ったことがない人間からしたら結構ツラい。
それでもPlay ScalaでDBアクセスをしようとがんばって調べつつ設定をしていたが、
だんだんわけがわからない状態になってきたので、一旦言葉の意味と関係性を整理したい。
DBアクセス用ライブラリ
調べてみたらこちらの記事が欲しい情報をほぼ全て網羅していた。
一応メモしたことを書いておく。
JDBC
JavaとRDBとの接続用API。
conn = DriverManager.getConnection()
して
conn.createStatement()
したStatementオブジェクトにSQL文を渡して
executeQuery()
ってしたら漸くDBにCRUDができる。
Webアプリケーション開発で初めて触ったのがRailsのActiveRecordだったので
かなり面倒に感じる。
Hibernate
JavaのORMライブラリ。
JDBCを使ってRDBMSと接続しているっぽい。
実装用のインタフェースが直接JDBCを扱うより充実しているんでしょう。
使ったことはないのでわかりませんが。
ScalikeJDBC
Scala用のORMライブラリ。
これもJDBC上で動くっぽい。
RDB
H2
組み込み用RDB。DBサーバとしても使える。
Android上に載っているSQliteと同じカテゴリ。
JDBC, Hibernateなどを使ってアクセスできる。
MySQL
略
PostgreSQL
ry
MongoDB
r
カテゴライズできないもの
Akka
Scalaのライブラリ。並行処理やアクターモデルに対応している。
ここが詳しい。
www.slideshare.net
Maven
ソフトウェアプロジェクト管理ツール。
ここが詳しい。
1. Maven とは | TECHSCORE(テックスコア)
Play Scalaにどう関連するかというと、
Maven RepogitoryにあるlibraryDependencies
を
build.sbt
に追記すると、ビルド時に記入したソフトウェアをインストールしてきてくれる。
例えばDB周りでslick
とpostgresql
を使いたい場合は以下のように書く。
build.sbt
1 name := """play_test""" 2 3 version := "1.0-SNAPSHOT" 4 5 lazy val root = (project in file(".")).enablePlugins(PlayScala) 6 7 scalaVersion := "2.11.7" 8 9 libraryDependencies ++= Seq( 10 cache, 11 ws, 12 "org.postgresql" % "postgresql" % "42.1.4", 13 "com.typesafe.play" %% "play-slick" % "2.0.0", 14 )
ここまででわかったこと
言葉の関係性を整理した結果、 DB周りに関してはこんな感じの組み合わせができる、ように見える。
- Play Scala * slick * PostgreSQL
- Play Scala * scalikeJDBC * MySQL
- Play Scala * anorm * H2
など。
今回のWebアプリケーションでは1の組み合わせを採用したい。
PostgreSQLを含めたNoSQLをまともに触ったことがないので、この機会に触ってみたい。