はじめに
Seasar2 の Java 系の多くのプロダクト、
特に SAStruts,S2JDBC,S2DAO が 2016年9月26日 に End of Life になるということで、
今後新しくJavaでWebアプリケーションを作るときは、どのフレームワークを使えば良いか。
いろいろ調べてみた感じ、Seasar2と同じようにサクサク感のある開発をしたいなら、
Spring Boot + Doma が良さそう。
というわけで、これら関連のメモを。(随時加筆予定)
開発環境構築
- JDK
- ここではJDK 8を使用。
- http://www.oracle.com/technetwork/java/javase/downloads/index.html からダウンロードしてインストール。
- Spring Tool Suite (以降、STSと記載)
- EclipseにSpring開発用のプラグイン群がバンドルされたもの。
- ここではバージョン 3.8.1 を使用。
- http://spring.io/tools/sts からダウンロードしてインストール。
- Doma Tools (Eclipseプラグイン)
- Doma1 と Doma2 があるが、ここでは Doma2 を使用。
- STS起動後、[Install New Software]で http://dl.bintray.com/domaframework/eclipse/ からインストール。
- Buildship Gradle Integration (Eclipseプラグイン)
- STS起動後、[Eclipse Marketplace]からインストール。
- 別のものでGradle IDE Packというものもあるが、ここの説明によると廃止される予定のようなので、ここに書いた Buildship Gradle Integrationのほうを使用。
プロジェクト作成、設定
- STSを起動する。
- プロジェクトの作成
- [File]-[New]-[Spring Starter Project]を選択。
- 以下を指定してプロジェクトを作成。
- [Name]:Example
- [Type]:Gradle (Buildship)
- [Packaging]:Jar
- [Java Version]:1.8
- [Language]:Java
- [Boot Version]:1.4.1 (SNAPSHOT)
- [Dependency]:
- Web
- DevTools
- Tymeleaf
- MySQL
- それ以外:デフォルトのまま
- build.gradleの編集
- ポイント
- 出力するJavaクラスとSQLファイルの出力先ディレクトリを同じにする
- processResources.destinationDir = compileJava.destinationDir
- コンパイルより前にSQLファイルを出力先ディレクトリにコピーするために依存関係を逆転する
- compileJava.dependsOn processResources
- Doma関連Mavenリポジトリ、依存関係追加
- https://oss.sonatype.org/content/repositories/snapshots/
- compile('org.seasar.doma.boot:doma-spring-boot-starter:1.1.0')
- domaGenRuntime('org.seasar.doma:doma-gen:2.12.1')
- domGenタスク作成
- 出力するJavaクラスとSQLファイルの出力先ディレクトリを同じにする
- 設定例
- ポイント
- プロジェクトの設定
- Domaのライブラリを取得してプロジェクトの/libフォルダに格納しておく。
- build.gradleに設定した依存関係により、以下のようなパスにダウンロードされているはず。これをコピーして格納。
- ~/.gradle/caches/modules-2/files-2.1/org.seasar.doma/doma/2.12.0/df98f42d23e149ff699c0ccd2a0997e974a55a14/doma-2.12.0.jar
- build.gradleに設定した依存関係により、以下のようなパスにダウンロードされているはず。これをコピーして格納。
- 作成したプロジェクトのプロパティを開く。
- [Java Compiler]-[Annotation Processing]で以下を指定。
- [Enable project specific settings]:チェックを付ける
- それ以外:デフォルトのまま
- [Java Compiler]-[Annotation Processing]-[Factory Path]で以下を指定。
- [Enable project specific settings]:チェックを付ける
- [Add JARs]でDomaのライブラリを追加
- {プロジェクト名}/lib/doma-2.12.0.jar
- それ以外:デフォルトのまま
- [Java Compiler]-[Annotation Processing]で以下を指定。
- Domaのライブラリを取得してプロジェクトの/libフォルダに格納しておく。
Doma-GenによるDAO,Entity自動生成
- 事前にSTSで[Window]-[Show View]から[Gradle Tasks]ビューを表示させておく。
- [Gradle Tasks]ビューにてプロジェクトを右クリックし、[Create Gradle Run Configuration]を選択。
- 以下を指定してOKを押す。
- Name:適当な名前(例:Example - domaGen)
- Gradle Tasks:domaGen(build.gradleに定義したタスク名)
- 保存したRun Configurationを実行するとDoma-Genが実行され、DAOとEntity(ソースフォルダ配下)、sql(META-INF配下)が自動生成される。
Spring BootとDomaの連携
- ポイント
- doma-spring-boot-starterの設定を利用するには、Doma-Genで生成したDAOに @ConfigAutowireableアノテーションの付与が必要。
- org.seasar.doma.boot.ConfigAutowireable
- application.ymlの設定には最低限以下が必要
- doma.dialect
- spring.datasource.url
- spring.datasource.username
- spring.datasource.password
- spring.datasource.driver-class-name
- doma-spring-boot-starterの設定を利用するには、Doma-Genで生成したDAOに @ConfigAutowireableアノテーションの付与が必要。