2019.07.04
前回も似たような記事を上げてありますが、改めて詳細に記載します。
数ある O/Rマッパーの中で、DOMAはかなり柔軟に細かい動きが可能です。
私はよく Domaを利用しています。
以下のような特徴があります。
ここでは、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つのエラーが発生して全くコンパイルが通らない。
どうやら、自動生成部分に問題があるらしいという事は分かりました。
その後、下記のサイトには、サポート対象が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.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月現在)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <repositories> <repository> <id>sonatype-snapshots</id> <name>Sonatype Snapshots</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <dependencies> <dependency> <groupId>org.seasar.doma.boot</groupId> <artifactId>doma-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies> |
プロジェクトを右クリックして、Propertiesを表示し、Java Compiler > Annotation Processing より赤枠の部分をチェックします。
続けて、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のライブラリと同じバージョンを指定する必要があります。
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 ファイルに以下の内容を追記します。
1 2 3 4 5 6 7 8 9 10 | spring.datasource.driverClassName=com.mysql.jdbc.Driver #DB接続先 spring.datasource.url=jdbc:mysql://localhost/testdb?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false #DBユーザ spring.datasource.username=hogehoge #DBユーザのパスワード spring.datasource.password=password00001 #DBの方言設定(ここではMySQLを指定) doma.dialect=mysql |
※DBのユーザ、パスワードは実環境に合わせて修正してください。
ここまで来たら基本的な設定は完了です。
Spring Bootプロジェクトを起動してみてください。
エラーがConsoleに表示せずに実行できたらOKです。