ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

DOMA2を使ってみた

今関わってるプロジェクトでDOMA2が使われてたので勉強したことをメモ

他の記事見てるとwebと絡めてるものが多いですが
素のサーブレットくらいしか触ったことないし

DBアクセスだけ確認したいのにwebからとか…
ってなったのでコンソール上で動きを確認したいと思います

DOMA2とは

javaのDBアクセスフレームワーク

ドキュメント
Welcome to Doma — Doma 2.0 ドキュメント

リポジトリ github.com

準備

ビルド

Maven Central で公開されているのでMavenでやってもいい気がしますが
DOMA2はGradleでビルドされてるみたいなのでGradle使う

Gradle l Modern Open-Source Enterprise Build Automation - Gradle *1

エディタ

みんな大好きIntellij IDEA
DOMA support プラグイン入れてます)

データベース

mysqlとかインストールするのめんどくさいので
Sqlite3使う

SQLite Home Page

実践

codeはgithubにおいてます

github.com

実行は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とかkotlinとか使いたいお年頃
(もはやdoma2関係なくなってしまった)

参考にさせていただきました

Getting Started — Doma 2.0 ドキュメント

美しき青きDoma!~SQLとIDEが奏でる美しきORマッピング~ - Java EE 事始め!

doma2を使ってみた - kinjouj.github.io

GitHub - domaframework/simple-boilerplate

SQLiteのDBにJDBCで接続してSQLを実行する - てけとーぶろぐ。

*1:インストールはたぶんこのへん

*2:検索してパッと出てこなかった