Doma は Java のDBアクセスフレームワークです。(Welcome to Doma — Doma 2.0 ドキュメントより)
私が仕切る案件では基本的にDomaを使っています。 部門的にはSeasar2+S2JDBCがスタンダードでしたが、Seasar2が公式アップデートはぼちぼち終了になるので、 今後の案件はおそらくSpring+Domaという組み合わせになるでしょう。
ちなみに私がDomaを選んだ理由は以下の通りです。
また、実際に使っていてよいと感じた点が以下の通りです。
では本編。主に感想です。
Domaの紹介
http://backpaper0.github.io/ghosts/doma-intro.html
- Domaの機能の紹介ですが、Domaは結構ハイペースでバージョンアップを続けていてフォローしきれていない機能(Embeddableなど)があったので、改めて勉強になりました。
- EntityListenerでDIってよさげですね。たぶん今度使います。
- どこかで発表があったかもしれませんが、doma-genなどの細かい(深い)話も聞いてみたいなぁ、と個人的に思いました。
ドメインクラスの話
http://backpaper0.github.io/ghosts/doma-domainclass.html
- Domaという名前の由来でもあるドメインクラスの話。
- ドメインって意味が広すぎてつらい、っていう意見ももっともですが、仕方ないですね。
- 私の身の回りではDomaのおかげで「Enum値をgetValueして比較する」みたいな悲しいコードが無くなりました。
- 「どこまでドメインクラス化するか」問題は皆共通の悩みだったようです。設計書にドメイン一覧とか書く案件だったら全部クラス化してもいい気がしますね。
とあるDoma2の使い方
http://gakuzzzz.github.io/slides/doma_practice/
- 関数型ゴリゴリなDoma2の使い方。Java8 Stream APIを理解していない人は見ても仕方ないスライドです。逆に理解している人にとっては非常に面白い教材ですね。
- というかDoma 2 素案 · GitHubで見かけたやり取りに対するアンサーだなぁ、と思ったら発表者はコメント付けた方でした。
- IN句、NOT IN句にNULL入れた時の挙動って調べたこともなかったなぁ。
Domaの開発で大切にしている10のこと - Qiita
http://qiita.com/nakamura-to/items/099cf72f5465d0323521
- Doma開発者の中村さんの発表。Domaの開発ポリシーについてです。
- さりげなくJPA以外のCriteriaフレームワークにフォローを入れつつも、どの程度Criteriaを使うか、に対する一つのアンサーとも言えます。
- 個人的には概ね同意というか、S2DAOからS2JDBCに移ることに納得のいかなかった人々へのノアの方舟といった感じです。
- 逆に全体的に同意しかねる!っていう人は他のフレームワークに移った方がいいかもしれない、そんな内容です。(この辺りは唯一の正解は無い話ですね)
- 実は私もツイートを拾ってもらって、Domaに反映されたことがあります。(たまたまリリース候補と合致してただけかもしれません) https://twitter.com/chonaso/status/683506363553583104
(LT)Doma2とMVC1.0でJava EE Webアプリを作ろう! // Speaker Deck
https://speakerdeck.com/masatoshitada/doma2tomvc1-dot-0dejava-ee-webapuriwozuo-rou
- SpringBoot with Doma2対抗のPayara Micro with Doma2。
- Domaとは全然関係ないですが、JerseyMVCじゃなくMVCでもいいかもね、ってちょっと思いました。
(LT)Doma2 with Kotlin
http://www.slideshare.net/yyyank/doma2-with-kotlin
- Kotlinって正直ほとんど言語仕様をフォローしていないんですが、KotlinがサポートしてるのってJava6なんですね...
- Kotlin関係ないですが、Domaって手軽にJDBCを使うツールとしても使えるんだなぁと認識させられました。
その他質問など
Q:せっかくなのでちょっと気になってた件。
A:データソースごとにパッケージ分けた方がいいです。Domaで複数DB取り扱う時ってEntityやDAOはDB毎にパッケージを分ける…?
— ちょなそ (@chonaso) 2016年6月20日あの場では特に聞かなかったですが、ドメイン使いだすとありがちな「DAOメソッドをオーバーロードしたい」問題って私だけですかね?