ScalaでDBを使った小物ツールをサクッと作るには?JDBI!?(タイトル修正)
ScalaでORマッパーというとSlickやScalikeJDBC等色々あるが、ほんとにちょっとしたツールを作りたいだけならばもっと手軽にやりたいと思うはず。
ただJDBCを直に使うとなるとこれはこれで逆に使いづらい。
そんなあなたに「Commons DBUtils」…ではなく「JDBI」!
こいつはJDBCを使いやすくしてくれるラッパー…どころか、軽量なのにORマッパーとしての機能を十分に備えるすごいやつ!
「Commons DBUtils」でも良いのだけど、最近密かに凄くイイと思ってるJavaのフレームワーク「Dropwizard」に採用されているJDBIがイケてるのでそっちを覚えるといいことがあるかも!
という訳で使ってみた。
DBに接続する部分はhikariCPを使ってます。一番速いらしいコネクションプール実装。
http://jdbi.org/five_minute_intro/
公式にあるコードをちょっと改造しただけだが、DefaultMapperでmapするとMap[String, Any]のリストで返ってくるのでDBUtilsみたいな手抜きコードも書ける!
JDBIはJavaのライブラリだがイテレータを取得してScalaのイテレータに変換してしまえばあとはScalaで好き放題書けていい感じ。
公式のものを少しいじった程度だがORマッパー的な機能をScalaで使ってみたのが以下のコード。
DAO用のインターフェースはtraitで問題ない。が、
@RegisterMapper(Array(classOf[ApplicationMapper]))
とかちょっと不自然になってたり、
case class Application(@BeanProperty id: String, @BeanProperty name: String)
いちいち@BeanPropertyつけないといけなかったりするのがあれだけど他のORマッパーよりは手抜きできてると思いたい。
とりあえずScalaでもBeanのマッピングは普通(?)にできる!
簡単かつ強力なJDBIはScalaでも役に立つはず!