BLOG
ブログ

2019.07.04

[Spring Boot] MySQL5.7+Doma2の組み込み

前回も似たような記事を上げてありますが、改めて詳細に記載します。

 

数ある O/Rマッパーの中で、DOMAはかなり柔軟に細かい動きが可能です。

私はよく Domaを利用しています。

以下のような特徴があります。

 

  • ・SQLが全て個別ファイルで管理できる
  • ・SQLファイルの中に直感的なマクロを指定できる
  • ・他のライブラリに依存しない

 

ここでは、Spring BootにDoma2を組み込んでMySQLにアクセスするサンプルを解説します。

※Doma2
https://doma.readthedocs.io/en/stable/

https://github.com/domaframework/doma/

 

■環境

Spring Boot
Spring Tool Suite (STS) 4.4.3
JDK12 → JDK11 → JDK8に変更(以下、経緯説明)
MySQL5.7

 

■ 最初に・・・

https://github.com/domaframework/doma/

上記のDOMA2公式サイトに Java12対応しているような記述があり当初はJDK12で動かそうとしていました。

しかし、なぜか以下の2つのエラーが発生して全くコンパイルが通らない。

どうやら、自動生成部分に問題があるらしいという事は分かりました。

  • ・Syntax error, insert “enum Identifier” to complete EnumHeader
  • ・Syntax error, insert “EnumBody” to complete EnumDeclaration

 

その後、下記のサイトには、サポート対象がJDK11という記述があり、藁にもすがる思いでJDK11に変えてみても変化なし。

(ページをメンテしていないだけかもしれないけど)

https://doma.readthedocs.io/en/stable/getting-started-eclipse/#install-jdk

 

さらに、JDK1.8に変えてコンパイルしてみたところ動作しました。

えー?つまりJDK8にしか対応していないかな?・・・。

確かに前回のDOMAを利用したプロジェクトもJDK8だったわ・・・と思いつつ、JDK8で進める事にします。

JDKはOracleJDKの商用ライセンスが変更されたこともあり、AdoptOpenJDK8を使う事にします。

https://adoptopenjdk.net/index.html

 

STSの File > New > Spring Starter Project を選択し、SpringBootプロジェクトを作成します。

手順は前回の記事を参照してください。

※Java Versionに8を指定します。

 

■ PomへDoma2のリポジトリをセット

pom.xmlの <dependencies>タグに spring boot starterを追加し、<repositories>タグにSonatype Snapshotsを追加するだけです。

細かいことはspring boot starterが全てやってくれます。

また今回、MySQLを利用するので、MySQLドライバも同時に取り込むように設定します。

※https://github.com/domaframework/doma-spring-boot

※doma-spring-boot-starterの最新バージョンはVersion 1.1.1のようです。(2019年7月現在)

 

■ Annotation Processingの設定

プロジェクトを右クリックして、Propertiesを表示し、Java Compiler > Annotation Processing より赤枠の部分をチェックします。

 

■ Factory Pathの設定

続けて、Factory Pathにある、 Enable Project specific settings にチェックを入れ、赤枠の「Add Variable…」ボタンをクリックします。

 

 

「M2_REPO」を選択してOKボタンを押します。

 

 

以下のように「M2_REPO」が入りました。M2_REPOはライブラリ群が格納される場所です。

次にこの「M2_REPO」をダブルクリックしてください。

 

以下のダイアログが表示されるので、「Extension….」ボタンを押してください。

 

 

以下のようなダイアログが表示されるので、org > seasar > doma > doma > 2.16.1 の中にある「doma-2.16.1.jar」を選択してOKボタンを押します。

 

「M2_REPO」の後に PATHが追加され、先ほど選択した doma-2.16.1.jarが指定されています。

このまま、「OK」ボタンを押すと登録できます。

 

 

結果的にFactory Pathは以下のようになりました。

 

ちなみに、doma-2.16.1.jar 以外にも doma-2.24.0.jarも選択する事ができます。(このブログの環境では)

なぜ、doma-2.16.1.jarを選択したのかというと、Java Build Pathの Librariesタブに選択されているdomaのライブラリが既に doma-2.16.1.jarが指定されているからです。

このBuild Pathで指定されているdomaのライブラリと同じバージョンを指定する必要があります。

 

■ src/main/resourcesに設置する SQLファイルをコンパイル時に参照できるようにする

Java Build Path の Sourceタブを表示し、<プロジェクト名>/src/main/resources にある 「Excluded: **」をダブルクリックします。

 

Exclusion patternsから 「**」を選択して、「Remove」ボタン押して消します。

その後、「Finish」ボタンを押して確定します。

 

以下のように「・・・/src/main/resources」の Excluded: (None)に変わっているはずです。

そのまま、「Apply and Close」ボタンを押して確定しダイアログを閉じてください。

 

 

■ 接続情報の設定

src/main/resources/application.properties ファイルに以下の内容を追記します。

※DBのユーザ、パスワードは実環境に合わせて修正してください。

ここまで来たら基本的な設定は完了です。

Spring Bootプロジェクトを起動してみてください。

エラーがConsoleに表示せずに実行できたらOKです。