読者です 読者をやめる 読者になる 読者になる

復習日記

勤務時間内で理解できなかったことやつまづいたことをまとめていく予定。

spring boot + doma2 + postgresql9.4

はじめに

仕事で使うためちょっとした挙動確認。

doma-genをMavenから動かせるようにするっていうのが目的でした。

環境

サンプルソース

github.com

あくまで設定ファイルの参考用としてください。

補足

ORマッパーです。doma2.x系はJDK8対応されており、doma1.x系のseasarプロジェクトとは別のようです。

apt(Annotation Processing Tool)といって、アノテーション付きのコードを元に、自動的にコードを生成・検証してくれる仕組みを持っています。

MyBatisだとアプリ実行時にsqlファイルがないよーとか構文変だよーとか怒られますが、domaの場合、コンパイル時に怒ってくれます。

daoインタフェースのメソッドSQLファイルが1対1です。分かりやすい。

daoの実装クラスはdomaによってapt_generated配下に自動生成されます。

eclipseプラグインです。

daoとsqlファイル間をeclipse上で右クリックメニューから行ったり来たりできます。

対応するsqlファイルがない場合、sqlファイル作成ダイアログを開いてくれます。

javaのentityクラスとdaoクラスを自動生成してくれるantツールです。

今回使用するプロジェクトはMavenでビルドします。

  • ant

doma-genはantで動きます。Mavenから呼び出す感じにしますが、antの設定は必要です。

セットアップ

  • JDK8

公式からダウンロードしてインストールします。

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  • Spring Boot

pom.xmlに依存ライブラリとして記載し、Mavenから落としてきます。

pom.xmlに依存ライブラリとして記載し、Mavenから落としてきます。

公式からダウンロードして解凍します。

http://mergedoc.osdn.jp/

公式からダウンロードしてインストールします。

http://www.enterprisedb.com/products-services-training/pgdownload#windows

  • Maven3.2.1

公式からダウンロードして解凍します。 コマンドプロンプトからMaven実行するので、PATHを通しておきます。

https://maven.apache.org/download.cgi

  • ant

pleadesに付属していました。 PATHを通しておかないとdoma-gen実行時に怒られるので通しておきます。

${pleiadesインストールディレクトリ}\eclipse\plugins\org.apache.ant_1.9.2.v201404171502\bin

「ヘルプ」→「新規ソフトウェアのインストール」から

http://dl.bintray.com/domaframework/eclipse/

プロジェクトを右クリック→「プロパティ」→「Javaコンパイラー」→「注釈処理」

「プロジェクト固有の設定を可能にする」にチェック

f:id:raimus0904:20150608005609j:plain

「注釈処理」→「ファクトリーパス」

「プロジェクト固有の設定を可能にする」にチェック

domaのjarを追加します。mavenレポジトリにありますので外部jarとして追加

f:id:raimus0904:20150608005625j:plain

daoインタフェースとsqlファイル間をeclipseの右クリック→「doma」からジャンプできるようになります。

[DOMA4019] SQLファイル[META-INF/../select.sql]がクラスパスから見つかりませんでした

上記エラーが発生したら、ビルドパスの設定でsrc/main/resourceのインクルードから除外パターンを削除します。下記を参照。

m2eでDomaを使う場合に気をつけること - taediumの日記

ビルドパスの設定から、src/main/resourceとsrc/main/resourceの出力先フォルダを同じにするようにします。

f:id:raimus0904:20150608042540j:plain

pom.xmlに依存ライブラリとして記載し、Mavenから落としてきます。

Mavenからmaven-antrun-pluginを使ってdoma-genのantタスクを実行します。

下記のコマンドを使います。詳細はGitHubに上げてるソースを確認してください。

mvn antrun:run

eclipse上からだと上手くいかず、コマンドラインから実行しないと動きません。

何故かは良く分からず。