Quarkus サポート
概要
Domaは Quarkus v3.7.0以降をサポートしています。DomaとQuarkusを組み合わせるには、 quarkus-doma モジュールが必要です。
注釈
Quarkusとquarkus-domaモジュールにはJava 17以降が必要です。
インストール
Gradle
dependencies {
annotationProcessor("org.seasar.doma:doma-processor:2.58.0")
implementation("org.seasar.doma:doma-core:2.58.0")
implementation("io.quarkiverse.doma:quarkus-doma:0.0.9")
}
Maven
...
<properties>
<doma.version>2.58.0</doma.version>
<quarkus-doma.version>0.0.9</quarkus-doma.version>
<compiler-plugin.version>3.9.0</compiler-plugin.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.seasar.doma</groupId>
<artifactId>doma-core</artifactId>
<version>${doma.version}</version>
</dependency>
<dependency>
<groupId>io.quarkiverse.doma</groupId>
<artifactId>quarkus-doma</artifactId>
<version>${quarkus-doma.version}</version>
</dependency>
</dependencies>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
<configuration>
<source>17</source>
<target>17</target>
<!-- the parameters=true option is critical so that RESTEasy works fine -->
<parameters>true</parameters>
<annotationProcessorPaths>
<path>
<groupId>org.seasar.doma</groupId>
<artifactId>doma-processor</artifactId>
<version>${doma.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
主な特徴
ホットリロード
開発モードでは、quarkus-domaモジュールは、変更時にSQLとスクリプトファイルをリロードします。
自動Bean登録
quarkus-domaモジュールは、すべてのDAO BeanをQuarkus CDIコンテナに登録します。
起動時のSQL自動実行
quarkus-domaモジュールは、Quarkusの起動時にimport.sqlを実行します。
設定
application.propertiesファイルに次の構成を記述できます。
quarkus.doma.sql-file-repository=greedy-cache
quarkus.doma.naming=none
quarkus.doma.exception-sql-log-type=none
quarkus.doma.dialect=h2
quarkus.doma.batch-size=10
quarkus.doma.fetch-size=50
quarkus.doma.max-rows=500
quarkus.doma.query-timeout=5000
quarkus.doma.sql-load-script=import.sql
上記のプロパティはすべてオプションです。
詳細は Configuration Reference を参照してください。
複数のデータソース
Domaの設定を各データソースに次のようにバインドできます。
# default datasource
quarkus.datasource.db-kind=h2
quarkus.datasource.username=username-default
quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:default
quarkus.datasource.jdbc.min-size=3
quarkus.datasource.jdbc.max-size=13
# inventory datasource
quarkus.datasource.inventory.db-kind=h2
quarkus.datasource.inventory.username=username2
quarkus.datasource.inventory.jdbc.url=jdbc:h2:tcp://localhost/mem:inventory
quarkus.datasource.inventory.jdbc.min-size=2
quarkus.datasource.inventory.jdbc.max-size=12
# Doma's configuration bound to the above default datasource
quarkus.doma.dialect=h2
quarkus.doma.batch-size=10
quarkus.doma.fetch-size=50
quarkus.doma.max-rows=500
quarkus.doma.query-timeout=5000
quarkus.doma.sql-load-script=import.sql
# Doma's configuration bound to the above inventory datasource
quarkus.doma.inventory.dialect=h2
quarkus.doma.inventory.batch-size=10
quarkus.doma.inventory.fetch-size=50
quarkus.doma.inventory.max-rows=500
quarkus.doma.inventory.query-timeout=5000
quarkus.doma.inventory.sql-load-script=import.sql
io.quarkus.agroal.DataSource
修飾子を使用して、名前付きのDomaのリソースを注入できます。
@Inject
Config defaultConfig;
@Inject
Entityql defaultEntityql;
@Inject
NativeSql defaultNativeSql;
@Inject
@DataSource("inventory")
Config invetoryConfig;
@Inject
@DataSource("inventory")
Entityql inventoryEntityql;
@Inject
@DataSource("inventory")
NativeSql inventoryNativeSql;
ネイティブイメージのサポート
quarkus-domaモジュールは、リフレクションクラスとリソースを認識し、追加の設定なしでネイティブイメージに含めます。