Doma2を使ってみる(その1)
ライブラリ概要
Doma 2はJava 8+向けのデータベースアクセスフレームワークです。Domaにはさまざまな強みがあります。
特徴
- SQLマッパー型
- 2-way SQL
- Kotlinサポート
- コンパイル時にアノテーションプロセッサーを使用して、ソースコードを検証および生成します。
- 型安全なCriteria APIを提供します。
- 他のライブラリに依存しません。
SQLマッパー型
データベースのテーブルとプログラムのクラスを直接対応付けることができます。
また、SQLは別途テキストファイルに書くことが多い
メリット
- 学習コストが低い
- SQLを知っていれば利用することができる
デメリット
- 誰でも扱える結果、共通化されないことが多い
選定理由
- 開発者を選ばずとりあえず DB アクセスをして動くものを作りたい場合に採用される
2-way SQL
SQL単体でも、プログラムからでも実行できる
select * from t_product where id = /* id */'1'
メリット
- SQLを直接書くことができるため、SQLのパフォーマンスを最大限に引き出すことが可能です。
- SQLファイルとJavaのコードが一致するため、保守性が高まります。
- SQLの結果をJavaのオブジェクトにマッピングする機能があります
デメリット
- SQLを直接書くため、SQLに詳しくないと使いこなすのが難しいかもしれません。
- データベースの種類によっては、SQLの書き方を変える必要があるかもしれません。
- ORMフレームワークと比べると、機能が少ないかもしれません。
Kotlinサポート
Kotlin1.4.0以降をサポート
Kotlinを利用した場合のベストプラクティスの書き方がある
コンパイル時にアノテーションプロセッサーを使用して、ソースコードを検証および生成します。
Doma はコンパイル時に Pluggable Annotation Processing API を使用します。
型安全なCriteria APIを提供します。
JPAの機能の一部であるCriteriaAPIを提供している。
Kotlinの場合は、Kotlin固有のCriteriaAPIを利用する。
まとめ
Doma2は2way sqlがあるおかげで、誰でもDBアクセスが簡単にできる点が評価されているみたい
Doma2から2way sqlだけ切り出して他のORMを利用している人もいるので、2way sqlがあるだけでDoma2を採用するのはよくなさそう。
実際にDoma2を利用してみて良さそうな点を考えたい