DOMA2を使ってみた
今関わってるプロジェクトでDOMA2が使われてたので勉強したことをメモ
他の記事見てるとwebと絡めてるものが多いですが
素のサーブレットくらいしか触ったことないし
DBアクセスだけ確認したいのにwebからとか…
ってなったのでコンソール上で動きを確認したいと思います
DOMA2とは
ドキュメント
Welcome to Doma — Doma 2.0 ドキュメント
準備
ビルド
Maven Central で公開されているのでMavenでやってもいい気がしますが
DOMA2はGradleでビルドされてるみたいなのでGradle使う
Gradle l Modern Open-Source Enterprise Build Automation - Gradle *1
エディタ
みんな大好きIntellij IDEA
(DOMA support プラグイン入れてます)
データベース
mysqlとかインストールするのめんどくさいので
Sqlite3使う
実践
codeはgithubにおいてます
実行はgradle run
またはgradlew run
でできると思います
sqliteのファイルはプロジェクトのルートにtest.db
というファイルを作成し行いました
ハマったポイント
- Gradleの使い方
singleton
が無いよエラー- sqlファイルが無いよエラー
- ***DaoImplがエディタ上で解決できない
- loggerの出力設定がわからない
Gradleの使い方
なんかIntellij IDEAにGradleで定義した dependencies がうまく動かなくて
持ってこれてはいるんだろうけど、importできなかった
welcom to intellij idea
の画面でプロジェクトを×押して消した後に
import project
でGradleプロジェクトとしてプロジェクトを読み込んだら動いた
singletonが無いよエラー
singletonのインスタンスを返すメソッドはsingleton
って決まってるらしい
雰囲気でgetInstance
とかにしてたのでハマった
sqlファイルが無いよエラー
エラー: [DOMA4019] ファイル[META-INF/test/SimpleDao/findAll.sql]がクラスパスから見つかりませんでした。
gradleのcompileJava
が実行される前にresources
のファイルを出力先にコピーするコードを書いてやらないとダメらしい
processResources.destinationDir = compileJava.destinationDir compileJava.dependsOn processResources
この2行をbuild.gradle
に追加するとビルドできた
***DaoImplがエディタ上で解決できない
Main.java
の11行目でnew SimpleDaoImpl()
していますが
SimpleDaoImpl
がエディタ上で解決できませんでした
ImplファイルはビルドされるタイミングでDoma2が作ってくれるのですが
それがビルド前のファイルからだと見えないので当然といえば当然なのですが
たぶんどこかの設定をいじればできるんだと思う
見つけたら追記します
loggerの出力設定がわからない
今回とは直接関係ないのでちゃんと調べてないんですけど*2
gradle run
を実行した時に出るjdbcのログがいっぱい出るので
System.out.println
で出力されたものがわかりにくいですね(^_^;)
これもわかったら修正したい
感想的なもの
sql書きたい民なので.sql
ファイルにsql書くのが良さそう
getting start以下の事しかしてないけど、学習コスト比較的低そう(低くあってほしい
最近仕事でJavaを書いてて
と思ったのでもっとScala勉強したいjava書いててscalaのあれはこれを綺麗にできるのかとか気づきがたくさんあるな
— ゆず@最後の学生生活 (@yuzu_441) 2016年3月16日
scala使いたい……
まとめ
javaもいいけどscalaとかkotlinとか使いたいお年頃
(もはやdoma2関係なくなってしまった)
参考にさせていただきました
Getting Started — Doma 2.0 ドキュメント
美しき青きDoma!~SQLとIDEが奏でる美しきORマッピング~ - Java EE 事始め!
doma2を使ってみた - kinjouj.github.io