SIBYL System

just technical blog

Anorm:todolistチュートリアルのDB取得を見る

   

play_full_color

Scala(Playframework)でDBアクセスする方法の一つとしてAnormがあります。今回はこのAnormの記述を理解するために記事を書きました。

Anormのコンセプト

Reading Anorm 2.0より引用

Anormのコンセプト

AnormはORMではない

生JDBCはつらい、よりよいAPIとしてのAnorm API

DBアクセスのDSLはSQLがベスト

SQLを生成するtype safe DSLは誤った方向性

ORMと格闘するよりSQL書いたほうがコスト小さい

確かにiBatis(MyBatis), 使うと、おんなじようなこと事何回も書かないといけないのツライし、HibernateはSQLの細かい記述や方言を使いはじめると結局NativeQueryで書かないといけなくなったり。辛いです。Anormの考え方は全くその通りかなと思います。

todolistの作りを見る

サンプルを見て実行して、コードを見るのが素早く理解を深めるのに重要だと思っています。

Task.allでDB内のtaskテーブルの中身を取得できるようになってますね。このtaskイミュータブルの部分がいまいち理解できません。ほかのサイトなどを覗くとこのような記述でもいけるようです。

つまりtaskはパーサーとマッパーに分けることができるようですね。「~」(チルダ)がどういう意味だか分かっていませんでしたが、こういう記法ができるみたいですね。

面倒くさいパーサの実装もDSLで書くだけ!そう、Scalaならね

scala-play-frameworkanormを使ってみて困ったこと、試したこと

 

Anormの思想自体はなんとなく分かった気がするけど、テーブルのカラム数が大規模になるとORMの時の「いっぱいカラム名書かないといけない問題」は同様に抱えそうな気が。

 

 - Playframework(Scala) , ,