Scalaでなかなか「これだ!」というO/RマッパやDBアクセス用のライブラリが見つからなかったので、MirageのScalaバインディングを作ったらよいのでは?と思い、いろいろ試しています。2waySQLを使えるScalaらしいインターフェースを持ったDBアクセスライブラリにしたいと思っています。
まだどういうインターフェースがいいのか試行錯誤している段階ですが、いまのところ基本的な使い方はこんな感じ。
val resultList = sqlManager.getResultList(TwoWaySql(""" SELECT BOOK_ID, BOOK_NAME, AUTHOR, PRICE FROM BOOK /*IF bookName != null*/ WHERE BOOK_NAME=/*bookName*/'Mirage in Action' /*END*/ """), Map("bookName" -> "Mirage in Action"))
この例はパラメータや結果にDTOではなくMapを使っています。
DTOやエンティティは今のMirageの仕組みのままだとJavaっぽさ全開になってしまうのでどうしたらいいか考え中です。エンティティを使った検索・更新処理についてはとりあえず初期のバージョンでは実装しないつもりですが、むしろ2waySQL + Mapインターフェースだけでもいいのかもしれないなぁ…などと思わなくもないです。