今関わってるプロジェクトで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