データソースの設定
概要
Red Hat build of Quarkus ドキュメントへのフィードバックの提供
エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- 次のリンクをクリックして チケットを作成します。
- Summary に課題の簡単な説明を入力します。
- Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
- Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。
第1章 Red Hat build of Quarkus でのデータソースの設定
統合設定モデルを使用して、Java Database Connectivity (JDBC) とリアクティブデータベースドライバーのデータソースを定義できます。
アプリケーションは、データソースを使用してリレーショナルデータベースにアクセスします。Quarkus では、Java Database Connectivity (JDBC) とリアクティブデータベースドライバーのデータソースを定義するための統合設定モデルが提供されています。
Quarkus では、Agroal と Vert.x を使用することで、JDBC とリアクティブドライバーで高性能かつスケーラブルなデータソース接続プールが可能になります。quarkus-jdbc-*
および quarkus-reactive-*-client
エクステンションを使用すると、ビルド時間が最適化され、設定したデータソースをセキュリティー、ヘルスチェック、メトリクスなどの Quarkus 機能と統合できます。
リアクティブデータソースの消費と使用の詳細は、Quarkus の Reactive SQL clients ガイドを参照してください。
さらに、JDBC データソースの消費と使用については、Quarkus の Hibernate ORM ガイドを参照してください。
1.1. Quarkus で datasources
の設定を開始する
このセクションでは、基礎を理解しているユーザー向けに、データソースをすばやく設定するための概要とコードサンプルを示します。
より高度な設定例は、参考資料 を参照してください。
1.1.1. 開発モードでのゼロコンフィグセットアップ
Quarkus では Dev Services 機能を使用することで容易にデータベースを設定でき、開発 (dev) モードでのテストや稼働を目的としたデータベースのゼロコンフィグセットアップが可能になります。開発モードでは、DevServices を使用して Quarkus にデータベースを処理させることが推奨されます。一方、実稼働モードでは、Quarkus 外で管理されるデータベースを指す明示的なデータベース設定の詳細を指定します。
Dev Services を使用するには、目的のデータベース型に適したドライバーエクステンション (jdbc-postgresql
など) を pom.xml
ファイルに追加します。開発モードでは、データベース接続の詳細を明示的に指定しない場合、Quarkus が自動的にデータベースのセットアップを処理し、アプリケーションとデータベース間の接続を指定します。
ユーザー認証情報を指定すると、基礎となるデータベースがその認証情報を使用するように設定されます。これは、外部ツールを使用してデータベースに接続する場合に便利です。
この機能を使用するには、データベース型に応じて Docker または Podman コンテナーランタイムがインストールされていることを確認してください。H2 などの特定のデータベースは in-memory モードで動作し、コンテナーランタイムを必要としません。
本番モードで使用する実際の接続詳細の前に %prod
を付けて、開発モードに適用されないようにしてください。詳細は、「設定リファレンス」ガイドの プロファイル セクションを参照してください。
Dev Services の詳細は、Dev Services overview を参照してください。
詳細とオプションの設定は、Dev Services for databases を参照してください。
1.1.2. JDBC データソースを設定する
選択したデータベースに応じて、適切な JDBC エクステンションを追加します。
-
quarkus-jdbc-db2
quarkus-jdbc-derby
注記Apache Derby データベースは Red Hat build of Quarkus 3.20 で非推奨となり、今後のリリースで削除される予定です。Red Hat は、現在のリリースライフサイクル期間中、Apache Derby の 開発サポート を引き続き提供します。
-
quarkus-jdbc-h2
-
quarkus-jdbc-mariadb
-
quarkus-jdbc-mssql
-
quarkus-jdbc-mysql
-
quarkus-jdbc-oracle
-
quarkus-jdbc-postgresql
-
JDBC データソースを設定します。
quarkus.datasource.db-kind=postgresql 1 quarkus.datasource.username=<your username> quarkus.datasource.password=<your password> quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/hibernate_orm_test quarkus.datasource.jdbc.max-size=16
- 1
- この設定値は、クラスパス上に複数のデータベースエクステンションがある場合にのみ必要です。
利用可能なエクステンションが 1 つだけの場合、Quarkus はそれが適切であると想定します。ドライバーをテストスコープに追加すると、Quarkus は指定されたドライバーをテストに自動的に含めます。
1.1.2.1. JDBC 接続プールのサイズ調整
負荷のピーク時の過負荷からデータベースを保護するには、データベースの負荷にスロットリングを適用できるようプールサイズを適切に設定します。最適なプールサイズは、並列アプリケーションユーザーの数やワークロードの性質など、多くの要因により異なります。
プールサイズの設定が小さすぎると、接続の待機中に一部のリクエストがタイムアウトになる可能性があることに注意してください。
プールサイズ調整プロパティーの詳細は、JDBC 設定リファレンス セクションを参照してください。
1.1.3. リアクティブデータソースを設定する
選択したデータベースに応じて、適切なリアクティブエクステンションを追加します。
-
quarkus-reactive-mssql-client
-
quarkus-reactive-mysql-client
-
quarkus-reactive-oracle-client
-
quarkus-reactive-pg-client
-
リアクティブデータソースを設定します。
quarkus.datasource.db-kind=postgresql 1 quarkus.datasource.username=<your username> quarkus.datasource.password=<your password> quarkus.datasource.reactive.url=postgresql:///your_database quarkus.datasource.reactive.max-size=20
- 1
- この設定値は、クラスパス上に複数のリアクティブドライバーエクステンションがある場合にのみ必要です。
1.2. データソースを設定する
次のセクションでは、単一または複数データソースの設定を説明します。説明をシンプルにするために、単一データソースをデフォルトデータソース (名前なし) とします。
1.2.1. 単一データソースを設定する
データソースは、JDBC データソース、リアクティブ、またはその両方になります。これは、プロジェクトエクステンションの設定と選択に応じて決定されます。
次の設定プロパティーを使用してデータソースを定義します。この場合の
db-kind
は、接続先のデータベースプラットフォーム (例:h2
) を定義します。quarkus.datasource.db-kind=h2
Quarkus は、
db-kind
データベースプラットフォーム属性に指定された値から、使用するべき JDBC ドライバークラスを推定します。注記この手順は、アプリケーションが複数のデータベースドライバーに依存する場合にのみ必要です。アプリケーションが単一のドライバーで動作する場合、ドライバーは自動的に検出されます。
Quarkus には現在、次の種類のビルトインデータベースがあります。
-
DB2:
db2
Derby:
derby
注記Apache Derby データベースは Red Hat build of Quarkus 3.20 で非推奨となり、今後のリリースで削除される予定です。Red Hat は、現在のリリースライフサイクル期間中、Apache Derby の 開発サポート を引き続き提供します。
-
H2:
h2
-
MariaDB:
mariadb
-
Microsoft SQL Server:
mssql
-
MySQL:
mysql
-
Oracle:
oracle
-
PostgreSQL:
postgresql
、pgsql
またはpg
ビルトインではない種類のデータベースを使用する場合は
other
を使用し、JDBC ドライバーを明示的に定義します。注記カスタムデータベースとドライバー で説明されているように、JVM モードの Quarkus アプリケーションでは任意の JDBC ドライバーを使用できます。ただし、ビルトイン以外の種類のデータベースを使用すると、アプリケーションをネイティブ実行可能ファイルにコンパイルする際に機能しない可能性が高くなります。
ネイティブ実行可能ファイルのビルドの場合、利用可能な JDBC Quarkus エクステンションを使用するか、使用する特定のドライバー用のカスタムエクステンションを提供することが推奨されます。
-
DB2:
次のプロパティーを設定して認証情報を定義します。
quarkus.datasource.username=<your username> quarkus.datasource.password=<your password>
データソースの 認証情報プロバイダーを使用 して、Vault からパスワードを取得することもできます。
これまでは、JDBC とリアクティブドライバーのどちらを使用しているかにかかわらず、設定は同じでした。データベースの種類と認証情報の定義以外は、使用しているドライバーの種類により異なります。JDBC とリアクティブドライバーは、同時に使用できます。
1.2.1.1. JDBC データソース
JDBC は最も一般的なデータベース接続パターンであり、通常は非リアクティブな Hibernate ORM と組み合わせて使用する場合に必要です。
JDBC データソースを使用する場合は、まず必要な依存関係を追加します。
ビルトイン JDBC ドライバーで使用する場合は、以下のリストからリレーショナルデータベースドライバーの Quarkus エクステンションを選択して追加します。
Derby -
quarkus-jdbc-derby
注記Apache Derby データベースは Red Hat build of Quarkus 3.20 で非推奨となり、今後のリリースで削除される予定です。Red Hat は、現在のリリースライフサイクル期間中、Apache Derby の 開発サポート を引き続き提供します。
H2 -
quarkus-jdbc-h2
注記H2 データベースと Derby データベースは、"組み込みモード" で実行するように設定できます。ただし、Derby エクステンションでは、組み込みデータベースエンジンのネイティブ実行可能ファイルへのコンパイルはサポートされていません。
結合テストに関する提案事項は、in-memory データベースを使用してテストする を参照してください。
-
DB2 -
quarkus-jdbc-db2
-
MariaDB -
quarkus-jdbc-mariadb
-
Microsoft SQL Server -
quarkus-jdbc-mssql
-
MySQL -
quarkus-jdbc-mysql
-
Oracle -
quarkus-jdbc-oracle
PostgreSQL -
quarkus-jdbc-postgresql
たとえば、PostgreSQL ドライバーの依存関係を追加するには、以下を実行します。
./mvnw quarkus:add-extension -Dextensions="jdbc-postgresql"
注記ビルトイン JDBC ドライバーエクステンションを使用すると、Agroal エクステンションが自動的に組み込まれます。これは、カスタムおよびビルトインの JDBC ドライバーに適用できる JDBC 接続プール実装です。ただし、カスタムドライバーの場合は Agroal を明示的に追加する必要があります。
カスタム JDBC ドライバーで使用するには、リレーショナルデータベースドライバーのエクステンションとともに
quarkus-agroal
依存関係をプロジェクトに追加します。./mvnw quarkus:add-extension -Dextensions="agroal"
別のデータベースの JDBC ドライバーを使用するには、ビルトインエクステンションがない、または別のドライバーがあるデータベースを使用 します。
JDBC URL プロパティーを定義して JDBC 接続を設定します。
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/hibernate_orm_test
注記プロパティー名の接頭辞
jdbc
に注意してください。JDBC 固有のすべての設定プロパティーには、接頭辞としてjdbc
が付いています。リアクティブデータソースの場合、接頭辞はreactive
です。
JDBC の設定の詳細は、JDBC URL フォーマットのリファレンス および Quarkus エクステンションとデータベースドライバーのリファレンス を参照してください。
1.2.1.1.1. カスタムデータベースとドライバー
お使いのデータベース用の JDBC エクステンションが Quarkus にない場合、または OpenTelemetry 用などの別の JDBC ドライバーを使用する必要がある場合は、JDBC ドライバーを明示的に設定できます。
エクステンションがない場合も、JDBC ドライバーは JVM モードで正しく動作すると予想されます。しかし、アプリケーションをネイティブ実行可能ファイルにコンパイルする際に、ドライバーが機能しない可能性があります。ネイティブ実行可能ファイルをビルドするには、既存の Quarkus JDBC エクステンションを使用するか、ドライバー用の新しいエクステンションを提供してください。
JVM モードでビルトインサポートがないデータベースへのアクセスを定義した例:
quarkus.datasource.db-kind=other quarkus.datasource.jdbc.driver=oracle.jdbc.driver.OracleDriver quarkus.datasource.jdbc.url=jdbc:oracle:thin:@192.168.1.12:1521/ORCL_SVC quarkus.datasource.username=scott quarkus.datasource.password=tiger
JDBC 設定オプションや、接続プールサイズなどの他の側面の設定に関する詳細は、JDBC 設定リファレンス セクションを参照してください。
1.2.1.1.2. データソースを消費する
Hibernate ORM を使用すると、Hibernate レイヤーが自動的にデータソースを取得して使用します。
データソースへの in-code アクセスでは、次のように他の Bean としてデータソースを取得する必要があります。
@Inject AgroalDataSource defaultDataSource;
上記の例のタイプは AgroalDataSource
、つまり javax.sql.DataSource
サブタイプです。そのため、注入されたタイプとして javax.sql.DataSource
も使用できます。
1.2.1.1.3. Oracle に関する考慮事項
issue #36265 に記載されているように、Oracle は接続を閉じるときに、コミットされていないトランザクションを予期しない形でコミットします。そのため、Quarkus を停止すると、進行中のトランザクションが未完了の状態でコミットされる可能性があります。
この動作は想定外のものであり、データの損失につながる可能性があります。そのため、接続を閉じるときに、インターセプターが未完了のトランザクションをロールバックします。ただし、XA トランザクションを使用する場合は、トランザクションマネージャーがロールバックを処理します。
3.18 で導入された動作によってワークロードに問題が発生する場合は、-Dquarkus-oracle-no-automatic-rollback-on-connection-close
システムプロパティーを true
に設定して、この動作を無効にしてください。より永続的な設定などにより、必要に応じてこの動作を調整できるように、Issue トラッカー でユースケースの報告をお願いします。
1.2.1.2. リアクティブデータソース
Quarkus では、リアクティブデータソースで使用できるリアクティブクライアントがいくつか提供されています。
対応するエクステンションをアプリケーションに追加します。
-
MariaDB/MySQL:
quarkus-reactive-mysql-client
-
Microsoft SQL Server:
quarkus-reactive-mssql-client
-
Oracle:
quarkus-reactive-oracle-client
PostgreSQL:
quarkus-reactive-pg-client
インストールされたエクステンションは、データソース設定で定義した
quarkus.datasource.db-kind
と一致する必要があります。
-
MariaDB/MySQL:
ドライバーを追加した後、接続 URL を設定し、接続プールの適切なサイズを定義します。
quarkus.datasource.reactive.url=postgresql:///your_database quarkus.datasource.reactive.max-size=20
1.2.1.2.1. リアクティブ接続プールのサイズ調整
負荷のピーク時の過負荷からデータベースを保護するには、データベースの負荷にスロットリングを適用できるようプールサイズを適切に設定します。適切なサイズは、並列アプリケーションユーザーの数やワークロードの性質など、多くの要因により異なります。
プールサイズの設定が小さすぎると、接続の待機中に一部のリクエストがタイムアウトになる可能性があることに注意してください。
プールサイズ調整プロパティーの詳細は、リアクティブデータソース設定リファレンス セクションを参照してください。
1.2.1.3. JDBC データソースとリアクティブデータソースの同時使用
同じデータベースの種類用の JDBC エクステンションとリアクティブデータソースエクステンションが両方とも含まれている場合、デフォルトで JDBC データソースとリアクティブデータソースの両方が作成されます。
JDBC データソースとリアクティブデータソースの両方を作成しない場合は、次の設定を使用します。
JDBC データソースを明示的に無効にするには、以下を実行します。
quarkus.datasource.jdbc=false
リアクティブデータソースを明示的に無効にするには、以下を実行します。
quarkus.datasource.reactive=false
ヒントほとんどの場合、JDBC ドライバーとリアクティブデータソースエクステンションは、両方ではなくいずれか一方のみ存在するため、上記の設定はオプションです。
1.2.2. 複数のデータソースを設定する
Hibernate ORM エクステンションは、設定プロパティーを使用した 永続ユニット の定義をサポートしています。永続ユニットごとに、選択したデータソースを参照できます。
複数のデータソースを定義することは、単一のデータソースを定義するのと同じように機能しますが、重要な相違点として名前 (設定プロパティー) を定義する必要があります。
次の例では、3 つの異なるデータソースを示しています。
- デフォルトのデータソース
-
users
という名前のデータソース -
inventory
という名前のデータソース
それぞれの設定は次のとおりです。
quarkus.datasource.db-kind=h2 quarkus.datasource.username=username-default quarkus.datasource.jdbc.url=jdbc:h2:mem:default quarkus.datasource.jdbc.max-size=13 quarkus.datasource.users.db-kind=h2 quarkus.datasource.users.username=username1 quarkus.datasource.users.jdbc.url=jdbc:h2:mem:users quarkus.datasource.users.jdbc.max-size=11 quarkus.datasource.inventory.db-kind=h2 quarkus.datasource.inventory.username=username2 quarkus.datasource.inventory.jdbc.url=jdbc:h2:mem:inventory quarkus.datasource.inventory.jdbc.max-size=12
設定プロパティーに追加のセクションがあることに注意してください。構文は quarkus.datasource.[optional name.][datasource property]
です。
データベースエクステンションが 1 つだけインストールされている場合でも、Quarkus がそれを検出できるように、名前付きデータベースは少なくとも 1 つのビルドタイムプロパティーを指定する必要があります。通常、これは db-kind
プロパティーですが、Dev Services for Databases ガイドに従って、名前付きデータソースを作成するために Dev Services プロパティーを指定することもできます。
1.2.2.1. 名前付きデータソースの注入
複数のデータソースを使用する場合、各 DataSource
には、データソースの名前を値として持つ io.quarkus.agroal.DataSource
修飾子もあります。
前のセクションで説明したプロパティーを使用して 3 つの異なるデータソースを設定し、それぞれを次のように注入します。
@Inject AgroalDataSource defaultDataSource; @Inject @DataSource("users") AgroalDataSource usersDataSource; @Inject @DataSource("inventory") AgroalDataSource inventoryDataSource;
1.2.3. データソースをアクティブ化または非アクティブ化する
データソースがビルド時に設定され、その URL が実行時に設定されると、そのデータソースはデフォルトでアクティブになります。Quarkus は、アプリケーションの起動時に対応する JDBC 接続プールまたはリアクティブクライアントを起動します。
実行時にデータソースを非アクティブ化するには、次のいずれかを実行します。
-
quarkus.datasource[.optional name].jdbc.url
またはquarkus.datasource[.optional name].reactive.url
を設定しない。 -
quarkus.datasource[.optional name].active
をfalse
に設定する。
データソースがアクティブでない場合:
- データソースは、アプリケーションの起動中にデータベースへの接続を試行しません。
- データソースは ヘルスチェック に影響しません。
-
データソースに関連する静的 CDI インジェクションポイント (
@Inject DataSource ds
や@Inject Pool pool
など) により、アプリケーションの起動が失敗します。 -
CDI.getBeanContainer()
、Arc.instance()
、またはInstance<DataSource>
の注入などによるデータソースの動的な取得により、例外が出力されます。 データソースを使用するその他の Quarkus エクステンションにより、アプリケーションの起動が失敗する可能性があります。
この場合、他のエクステンションも非アクティブ化する必要があります。このシナリオの例については、Hibernate ORM ガイドのこのセクション を参照してください。
この機能は、実行時にアプリケーションが定義済みのセットから 1 つのデータソースを選択する必要がある場合に特に便利です。
実行時に選択する複数のデータソースを設定する例:
quarkus.datasource."pg".db-kind=postgres quarkus.datasource."pg".active=false quarkus.datasource."pg".jdbc.url=jdbc:postgresql:///your_database quarkus.datasource."oracle".db-kind=oracle quarkus.datasource."oracle".active=false quarkus.datasource."oracle".jdbc.url=jdbc:oracle:///your_database
実行時 に quarkus.datasource."pg".active=true
を設定すると、PostgreSQL データソースのみが使用可能になります。実行時に quarkus.datasource."oracle".active=true
を設定すると、Oracle データソースのみが使用可能になります。
カスタム設定プロファイル を使用すると、この設定が簡素化されます。上記の設定に次のプロファイル固有の設定を追加することで、quarkus.profile
を設定 して実行時に永続ユニットまたはデータソースを選択できます。たとえば、quarkus.profile=prod,pg
または quarkus.profile=prod,oracle
を使用します。
%pg.quarkus.hibernate-orm."pg".active=true %pg.quarkus.datasource."pg".active=true # Add any PostgreSQL-related runtime configuration here, prefixed with "%pg." %oracle.quarkus.hibernate-orm."oracle".active=true %oracle.quarkus.datasource."oracle".active=true # Add any Oracle-related runtime configuration here, prefixed with "%oracle."
この設定により、アクティブ なデータソースにのみアクセスできるようになります。これを実現するには、@Any
修飾子を持つ InjectableInstance<DataSource>
または InjectableInstance<Pool>
を注入し、getActive()
を呼び出します。
import io.quarkus.arc.InjectableInstance; @ApplicationScoped public class MyConsumer { @Inject @Any InjectableInstance<DataSource> dataSource; public void doSomething() { DataSource activeDataSource = dataSource.getActive(); // ... } }
または、デフォルトのデータソース用の CDI Bean プロデューサー を定義することもできます。この Bean プロデューサーは、現在アクティブな名前付きデータソースにリダイレクトします。これにより、以下に示すように、デフォルトのデータソースを直接注入できるようになります。
public class MyProducer { @Inject @DataSource("pg") InjectableInstance<DataSource> pgDataSourceBean; 1 @Inject @DataSource("oracle") InjectableInstance<DataSource> oracleDataSourceBean; @Produces 2 @ApplicationScoped public DataSource dataSource() { if (pgDataSourceBean.getHandle().getBean().isActive()) { 3 return pgDataSourceBean.get(); } else if (oracleDataSourceBean.getHandle().getBean().isActive()) { 4 return oracleDataSourceBean.get(); } else { throw new RuntimeException("No active datasource!"); } } } @ApplicationScoped public class MyConsumer { @Inject DataSource dataSource; 5 public void doSomething() { // .. just use the injected datasource ... } }
- 1
DataSource
またはAgroalDatasource
を直接注入しないでください。非アクティブな Bean を注入すると、起動が失敗します。代わりに、InjectableInstance<DataSource>
またはInjectableInstance<AgroalDataSource>
を注入してください。- 2
- CDI プロデューサーメソッドを宣言してデフォルトのデータソースを定義します。PostgreSQL または Oracle のうち、アクティブなものを選択します。
- 3 4
- Bean を取得する前に、それがアクティブかどうかを確認します。
- 5
- 唯一のアクティブなデータソースを注入します。
1.2.4. 単一のトランザクションで複数のデータソースを使用する
デフォルトでは、データソースでの XA サポートが無効になっています。したがって、トランザクションに 1 つのデータソースしか含めることができません。同じトランザクションで複数の非 XA データソースにアクセスしようとすると、次のような例外が発生します。
... Caused by: java.sql.SQLException: Exception in association of connection to existing transaction at io.agroal.narayana.NarayanaTransactionIntegration.associate(NarayanaTransactionIntegration.java:130) ... Caused by: java.sql.SQLException: Failed to enlist. Check if a connection from another datasource is already enlisted to the same transaction at io.agroal.narayana.NarayanaTransactionIntegration.associate(NarayanaTransactionIntegration.java:121) ...
同じトランザクションで複数の JDBC データソースを使用できるようにするには、次の手順を実行します。
- JDBC ドライバーが XA をサポートしていることを確認します。すべての サポート対象 JDBC ドライバーはサポートしています が、他の JDBC ドライバー はサポートしていない可能性があります。
- データベースサーバーが XA を有効化するように設定されていることを確認します。
-
quarkus.datasource[.optional name].jdbc.transactions
をxa
に設定して、関連する各データソースに対して XA サポートを明示的に有効にします。
XA を使用すると、1 つのデータソースでのロールバックにより、トランザクションに登録されている他のすべてのデータソースでのロールバックがトリガーされます。
現時点では、リアクティブデータソース上の XA トランザクションはサポートされていません。
トランザクションにデータソース以外のリソースが含まれる場合は、そのリソースで XA トランザクションがサポートされていない可能性や、追加の設定が必要になる可能性があることに注意してください。
1 つのデータソースに対して XA を有効にできない場合:
- その場合でも、Last Resource Commit Optimization (LRCO) を使用することで、1 つ (複数は不可) のリソースを除くすべてのデータソースに対して XA を有効にできます。
-
1 つのデータソースのロールバックによって他のデータソースのロールバックをトリガーする必要がない場合は、コードを複数のトランザクションに分割することを検討してください。これを行うには、
QuarkusTransaction.requiringNew()
/@Transactional(REQUIRES_NEW)
(推奨) またはUserTransaction
(より複雑なユースケースの場合) を使用します。
他の解決策が機能せず、Quarkus 3.8 以前との互換性が必要な場合は、quarkus.transaction-manager.unsafe-multiple-last-resources
を allow
に設定して、複数の非 XA データソース間での安全でないトランザクション処理を有効にしてください。
このプロパティーを allow
に設定すると、トランザクションのロールバックが、最後の非 XA データソースにのみ適用されます。他の非 XA データソースは、すでに変更をコミットしている可能性があります。これにより、システムが不整合な状態になる可能性があります。
または、そのような安全でない動作を許可し、その動作が発生した場合に警告を記録します。
-
プロパティーを
warn-each
に設定すると、問題のある それぞれ のトランザクションの警告が記録されます。 -
プロパティーを
warn-first
に設定すると、問題のある 最初 のトランザクションの警告が記録されます。
この設定プロパティーの使用は推奨されません。このプロパティーは今後、削除される予定です。アプリケーションを適宜更新してください。このプロパティーを維持することがユースケース上妥当であると思われる場合は、Quarkus トラッカー で Issue を作成し、その理由を説明してください。
1.3. データソースのインテグレーション
1.3.1. データソースヘルスチェック
quarkus-smallrye-health
エクステンションを使用する場合は、quarkus-agroal
エクステンションおよびリアクティブクライアントエクステンションが自動的にレディネスヘルスチェックを追加してデータソースを検証します。
アプリケーションのヘルスレディネスエンドポイント (デフォルトは /q/health/ready)
にアクセスすると、データソースの検証ステータスに関する情報を受け取ります。複数のデータソースがある場合はすべてのデータソースがチェックされ、そのうちの 1 つでもデータソース検証に失敗すると、ステータスが DOWN
に遷移します。
この動作は、quarkus.datasource.health.enabled
プロパティーを使用して無効にできます。
特定のデータソースのみをヘルスチェックから除外するには、以下を使用します。
quarkus.datasource."datasource-name".health-exclude=true
1.3.2. データソースメトリクス
quarkus-micrometer
または quarkus-smallrye-metrics
エクステンションを使用している場合、quarkus-agroal
はいくつかのデータソース関連のメトリクスをメトリクスレジストリーに提供できます。これは、quarkus.datasource.metrics.enabled
プロパティーを true
に設定することでアクティブ化できます。
メトリクスに実際の値を含むメトリクスを公開するには、Agroal メカニズムを使用して内部でメトリクスを有効にする必要があります。メトリクスエクステンションが存在し、Agroal エクステンションのメトリクスが有効になっている場合、このメトリクス収集メカニズムはデフォルトですべてのデータソースに対して有効になります。
特定のデータソースのメトリクスを無効にするには、quarkus.datasource.jdbc.enable-metrics
を false
に設定するか、名前付きデータソースに quarkus.datasource.<datasource name>.jdbc.enable-metrics
を適用します。これにより、収集メカニズムが無効の場合は、メトリクスの収集と /q/metrics
エンドポイントへの公開が無効になります。
逆に、quarkus.datasource.jdbc.enable-metrics
を true
に設定するか、名前付きデータソースに quarkus.datasource.<datasource name>.jdbc.enable-metrics
を設定すると、メトリクスエクステンションが使用されていない場合でもメトリクス収集が明示的に有効になります。これは、収集されたメトリクスにプログラムを使用してアクセスする必要がある場合に役立ちます。これらは、注入された AgroalDataSource
インスタンスで dataSource.getMetrics()
を呼び出すと使用可能になります。
このデータソースのメトリクス収集が無効になっている場合、すべての値はゼロになります。
1.3.3. データソースのトレース
データソースでトレースを使用するには、quarkus-opentelemetry
エクステンションをプロジェクトに追加する必要があります。
トレースを有効にするために別のドライバーを宣言する必要はありません。JDBC ドライバーを使用する場合は、OpenTelemetry エクステンションの手順 に従う必要があります。
すべてのトレースインフラストラクチャーが整っていても、データソーストレースはデフォルトでは有効になっていません。そのため、次のプロパティーを設定して有効にする必要があります。
# enable tracing quarkus.datasource.jdbc.telemetry=true
1.3.4. Narayana Transaction Manager のインテグレーション
Narayana JTA エクステンションも使用できる場合、インテグレーションは自動的に行われます。
これは、transactions
設定プロパティーを設定することでオーバーライドできます。
-
デフォルトの名前が指定されていないデータソースの
quarkus.datasource.jdbc.transactions
-
名前付きデータソースの
quarkus.datasource.<datasource-name>.jdbc.transactions
詳細は、後述の 設定リファレンス セクションを参照してください。
データベースへのトランザクションログの保存を JDBC を使用して容易にするには、Using transactions in Quarkus ガイドの Configuring transaction logs to be stored in a datasource セクションを参照してください。
1.3.4.1. 名前付きデータソース
Dev Services を使用する場合、必ずデフォルトのデータソースが作成されます。しかし、名前付きデータソースを指定するには、Quarkus がデータソースの作成方法を検出できるように、少なくとも 1 つのビルドタイムプロパティーが必要です。
通常は、db-kind
プロパティーを指定するか、quarkus.datasource."name".devservices.enabled=true
を設定して Dev Services を明示的に有効にします。
1.3.5. in-memory データベースを使用したテスト
H2 や Derby などの一部のデータベースは、結合テストを迅速に実行するファシリティーとして頻繁に 組み込みモード で使用されます。
推奨されるアプローチは、実稼働環境に可能な限り近い結果を得るために、実稼働環境向けのデータベースを使用することです。これは Dev Services を使用すると容易になります。設定が不要で、起動が比較的高速なためです。ただし、単純な結合テストを実行する機能が必要なシナリオでは、JVM 対応データベースを使用することもできます。
1.3.5.1. サポートと制限事項
組み込みデータベース (H2 および Derby) は JVM モードで動作します。ネイティブモードの場合、次の制限が適用されます。
- ネイティブモードでは、Derby をアプリケーションに組み込めません。ただし、Quarkus Derby エクステンションを使用すると、Derby JDBC クライアント のネイティブコンパイルが可能になり、リモート 接続がサポートされます。
- ネイティブイメージに H2 を組み込むことは推奨されません。代わりに別のデータベースへのリモート接続を使用するなど、別の方法を検討してください。
1.4. 参考資料
1.4.1. 共通データソース設定リファレンス
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライドできます。
設定プロパティー | 型 | デフォルト |
smallrye-health エクステンションが存在する場合にヘルスチェックを公開するかどうか。 これはグローバル設定であり、データソース固有の設定ではありません。
環境変数: | boolean |
|
メトリクスエクステンションが存在する場合にデータソースメトリクスを公開するかどうか。 これはグローバル設定であり、データソース固有の設定ではありません。 注記 これは、データソースのメトリクス収集を有効にするために JDBC データソースレベルで設定する必要がある "jdbc.enable-metrics" プロパティーとは異なります。
環境変数: | boolean |
|
接続先のデータベースの種類 (h2、postgresql など)。
環境変数: | string | |
接続先のデータベースのバージョン (例: '10.0'). 注意
ここで設定するバージョン番号は、データベースの JDBC ドライバーの 原則として、ここでは可能な限り高いバージョンを設定する必要がありますが、アプリケーションの接続先となるデータベースのバージョン以下でなければなりません。 バージョンが高いほどパフォーマンスが向上し、より多くの機能を使用できます (たとえば、Hibernate ORM はより効率的な SQL を生成し、回避策を回避し、より多くのデータベース機能を活用できます)。しかし、接続先のデータベースよりバージョンが高いと、ランタイム例外が発生する (たとえば、Hibernate ORM がデータベースが拒否する無効な SQL を生成する) 可能性があります。 一部のエクステンション (Hibernate ORM エクステンションなど) は、起動時にこのバージョンを実際のデータベースバージョンと照合しようとします。そのため、実際のバージョンが低いために起動に失敗するか、データベースにアクセスできずに警告が表示されます。 このプロパティーのデフォルトは各エクステンションにより異なり、Hibernate ORM エクステンションのデフォルトは最も古いサポート対象のバージョンです。
環境変数: | string | |
データソースの一般的なヘルスチェックが有効になっている場合に、この特定のデータソースをヘルスチェックから除外するかどうか。 デフォルトでは、ヘルスチェックには設定されているすべてのデータソースが含まれます (有効になっている場合)。
環境変数: | boolean |
|
実行時にこのデータソースをアクティブにするかどうか。 ドキュメントのこのセクション を参照してください。
環境変数: | boolean |
URL が設定されている場合は |
データソースのユーザー名
環境変数: | string | |
データソースのパスワード
環境変数: | string | |
認証情報プロバイダー名
環境変数: | string | |
認証情報プロバイダーの Bean 名。
これは、
Vault の場合、認証情報プロバイダー Bean 名は
環境変数: | string | |
型 | デフォルト | |
この Dev Service を dev モードまたはテストでアプリケーションで始まるかどうか。 接続設定 (JDBC URL やリアクティブクライアント URL など) が明示的に設定されていない限り、Dev Service はデフォルトで有効になります。
環境変数: | boolean | |
コンテナーベースの Dev Service プロバイダーのコンテナーイメージ名。 プロバイダーが H2 や Derby などのコンテナーベースのデータベースでない場合、これは効果がありません。
環境変数: | string | |
コンテナーに渡される環境変数。
Environment variable: | Map<String,String> | |
追加のコンテナー設定に渡される汎用プロパティー。 ここで定義されるプロパティーはデータベース固有であり、各データベースの Dev Service 実装で解釈されます。
Environment variable: | Map<String,String> | |
データベース接続 URL に追加される汎用プロパティー。
環境変数: | Map<String,String> | |
開発サービスがリッスンするオプションの固定ポート。 定義されていない場合、ポートはランダムに選択されます。
環境変数: | int | |
コンテナーベースの Dev Service プロバイダーに使用するコンテナー起動コマンド。 プロバイダーが H2 や Derby などのコンテナーベースのデータベースでない場合、これは効果がありません。
環境変数: | string | |
この Dev Service がオーバーライドをサポートする場合に使用するデータベース名。
環境変数: | string | |
この Dev Service がオーバーライドをサポートする場合に使用するユーザー名。
環境変数: | string | |
この Dev Service がオーバーライドをサポートする場合に使用するパスワード。
環境変数: | string | |
クラスパスからロードされ、Dev Service データベースに適用される SQL スクリプトへのパス。 プロバイダーが H2 や Derby などのコンテナーベースのデータベースでない場合、これは効果がありません。
環境変数: | list of string | |
コンテナーにマッピングされるボリューム。 マップキーはホストの場所に対応します。マップ値はコンテナーの場所です。ホストの場所が "classpath:" で始まる場合、マッピングは読み取り専用権限でクラスパスからリソースをロードします。 ファイルシステムの場所を使用する場合、ボリュームは読み取り/書き込み権限で生成されるため、ファイルシステムでデータの損失や変更が発生する可能性があります。 プロバイダーが H2 や Derby などのコンテナーベースのデータベースでない場合、これは効果がありません。
環境変数: | Map<String,String> | |
dev モードセッションまたはテストスイートの実行後 に Dev Service コンテナーを実行したままにして、次の dev モードセッションまたはテストスイートの実行で再利用するかどうか。 dev モードセッションまたはテストスイート実行中、Quarkus は、設定 (ユーザー名、パスワード、環境、ポートバインディングなど) が変更されていない限り、常に Dev Services を再利用します。この機能は、Quarkus が実行していないときに コンテナーを実行したままにして、実行間で再利用できるようにすることを目的としています。 警告
この機能は、
この設定プロパティーはデフォルトで
環境変数: | boolean |
|
JBoss ロガーによってログを使用するかどうか。 プロバイダーが H2 や Derby などのコンテナーベースのデータベースでない場合、これは効果がありません。
環境変数: | boolean |
|
1.4.2. JDBC 設定リファレンス
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライドできます。
設定プロパティー | 型 | デフォルト |
Dev UI ページを有効または無効にします。
環境変数: | boolean |
|
Dev UI ページで SQL クエリーを許可します。
環境変数: | boolean |
|
テーブルの値を取得するために、SELECT 文の末尾にこれを追加します (LIMIT 100、TOP 100 など)。
環境変数: | string | |
許可されるデータベースホスト。デフォルトでは、localhost のみが許可されます。ここでホストを指定すると、そのホストも許可されます。
環境変数: | string | |
このデータソースの JDBC データソースを作成する場合。
環境変数: | boolean |
|
データソースドライバーのクラス名
環境変数: | string | |
通常の JDBC トランザクション、XA を使用するか、すべてのトランザクション機能を無効にするか。
XA を有効にする場合は、
環境変数: | enabled: JDBC データソースを Quarkus の JTA TransactionManager と統合します。これはデフォルトです。
xa: disabled: Agroal と Narayana TransactionManager の統合を無効にします。これは一般的に推奨されず、特別な場合にのみ役立ちます。意味を深く理解せずにこれを使用しないように注意してください。 | enabled |
データソースメトリクスの収集を有効にします。指定しない場合、メトリクスエクステンションがアクティブであれば、デフォルトでメトリクス収集が有効になります。
環境変数: | boolean | |
OpenTelemetry JDBC インストルメンテーションを有効にします。
環境変数: | boolean |
|
データソースの URL
環境変数: | string | |
プールの初期サイズ。通常、初期サイズは少なくとも最小サイズに一致するように設定する必要がありますが、強制ではありません。これは、起動時に接続の遅延初期化を優先するアーキテクチャーを可能にし、一方で起動後に最小プールサイズを維持できるようにするためです。
環境変数: | int | |
データソースプールの最小サイズ
環境変数: | int |
|
データソースプールの最大サイズ
環境変数: | int |
|
バックグラウンドでアイドル状態の接続を検証する間隔。
バックグラウンド検証を無効にするには、
環境変数: |
| |
指定された間隔よりも長くアイドル状態になっている接続に対し、フォアグラウンド検証を実行します。
環境変数: | ||
新しい接続の取得をキャンセルするまでのタイムアウト
環境変数: |
| |
接続リークをチェックする間隔。
環境変数: |
| |
アイドル状態の接続の削除を試行する間隔。
環境変数: |
| |
接続の最大存続期間。
環境変数: |
| |
トランザクション分離レベル。
環境変数: |
| |
リークされた接続に関する追加のトラブルシューティング情報を収集して表示します。
環境変数: | boolean |
|
プールに返すときに接続をフラッシュできるようにします。デフォルトでは有効になっていません。
環境変数: | boolean |
|
有効にすると、開いているすべてのステートメントがアプリケーションにより閉じられないまま接続がプールに返された場合に、Agroal は警告を生成できるようになります。これは、オープン接続の追跡とは関係ありません。パフォーマンスを最大化するために無効にしますが、リークが発生していないという高い信頼性がある場合に限ります。
環境変数: | boolean |
|
接続の初回使用時に実行されるクエリー。
環境変数: | string | |
接続を検証するために実行されるクエリー。
環境変数: | string | |
アイドル状態に関係なく、取得前に接続検証 (フォアグラウンド検証) を強制します。
呼び出しごとに検証を実行するオーバーヘッドが発生します。そのため、代わりにデフォルトのアイドル検証を利用し、このプロパティーは
環境変数: | boolean |
|
接続の再利用を防ぐためにプーリングを無効にします。外部プールが接続のライフサイクルを管理する場合に使用します。
環境変数: | boolean |
|
接続の取得時にアクティブなトランザクションを要求します。実稼働環境で推奨されます。警告: 一部のエクステンションは、スキーマ更新やスキーマ検証などのトランザクションを保持せずに接続を取得します。その場合、これを STRICT に設定すると失敗する可能性があります。
環境変数: |
| |
新しい接続の作成時に JDBC ドライバーに渡される、その他の未指定のプロパティー。
環境変数: | Map<String,String> | |
OpenTelemetry JDBC インストルメンテーションを有効にします。
環境変数: | boolean |
|
duration の値を書き込むには、標準の java.time.Duration
フォーマットを使用します。詳細は、Duration#parse() Java API ドキュメント を参照してください。
数字で始まる簡略化されたフォーマットも使用できます。
- 値が数値のみの場合は、秒単位の時間を表します。
-
数字の後に
ms
が続く値は、ミリ秒単位の時間を表します。
その他の場合は、解析のために簡略化されたフォーマットが java.time.Duration
フォーマットに変換されます。
-
数字の後に
h
、m
、またはs
が続く値には、接頭辞PT
が付きます。 -
数字の後に
d
が続く値は、接頭辞P
が付きます。
1.4.3. JDBC URL リファレンス
サポートされている各データベースには、異なる JDBC URL 設定オプションが含まれています。次のセクションでは、各データベース URL の概要と公式ドキュメントへのリンクを示します。
1.4.3.1. DB2
jdbc:db2://<serverName>[:<portNumber>]/<databaseName>[:<key1>=<value>;[<key2>=<value2>;]]
- 例
-
jdbc:db2://localhost:50000/MYDB:user=dbadm;password=dbadm;
URL 構文とその他のサポートされるオプションの詳細は、公式ドキュメント を参照してください。
1.4.3.2. Derby
jdbc:derby:[//serverName[:portNumber]/][memory:]databaseName[;property=value[;property=value]]
- 例
-
jdbc:derby://localhost:1527/myDB
,jdbc:derby:memory:myDB;create=true
Derby は、ファイルに基づきサーバーとして実行することも、完全にインメモリーで実行することもできる組み込みデータベースです。上記のオプションはすべて利用可能です。
詳細は、公式ドキュメント を参照してください。
1.4.3.3. H2
jdbc:h2:{ {.|mem:}[name] | [file:]fileName | {tcp|ssl}:[//]server[:port][,server2[:port]]/name }[;key=value…]
- 例
-
jdbc:h2:tcp://localhost/~/test
,jdbc:h2:mem:myDB
H2 は、組み込みモードまたはサーバーモードで実行できるデータベースです。ファイルストレージを使用することも、完全にインメモリーで実行することも可能です。上記のオプションはすべて利用可能です。
詳細は、公式ドキュメント を参照してください。
1.4.3.4. MariaDB
jdbc:mariadb:[replication:|failover:|sequential:|aurora:]//<hostDescription>[,<hostDescription>…]/[database][?<key1>=<value1>[&<key2>=<value2>]]
hostDescription:: <host>[:<portnumber>] or address=(host=<host>)[(port=<portnumber>)][(type=(master|slave))]
- 例
-
jdbc:mariadb://localhost:3306/test
詳細は、公式ドキュメント を参照してください。
1.4.3.5. Microsoft SQL サーバー
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
- 例
-
jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks
Microsoft SQL Server JDBC ドライバーは、基本的に他のドライバーと同じように動作します。
詳細は、公式ドキュメント を参照してください。
1.4.3.6. MySQL
jdbc:mysql:[replication:|failover:|sequential:|aurora:]//<hostDescription>[,<hostDescription>…]/[database][?<key1>=<value1>[&<key2>=<value2>]]
hostDescription:: <host>[:<portnumber>] or address=(host=<host>)[(port=<portnumber>)][(type=(master|slave))]
- 例
-
jdbc:mysql://localhost:3306/test
詳細は、公式ドキュメント を参照してください。
1.4.3.6.1. MySQL の制限事項
Quarkus アプリケーションをネイティブイメージにコンパイルする場合、JMX および Oracle Cloud Infrastructure (OCI) のインテグレーションに対する MySQL サポートは、GraalVM ネイティブイメージと互換性がないため無効になります。
- ネイティブモードで実行する場合に JMX サポートがないのは当然の結果であり、解決される見込みはありません。
- OCI とのインテグレーションはサポートされていません。
1.4.3.7. Oracle
jdbc:oracle:driver_type:@database_specifier
- 例
-
jdbc:oracle:thin:@localhost:1521/ORCL_SVC
詳細は、公式ドキュメント を参照してください。
1.4.3.8. PostgreSQL
jdbc:postgresql:[//][host][:port][/database][?key=value…]
- 例
-
jdbc:postgresql://localhost/test
各部分のデフォルトは次のとおりです。
host
- localhost
port
- 5432
database
- ユーザー名と同じ名前
追加パラメーターの詳細は、公式ドキュメント を参照してください。
1.4.4. Quarkus エクステンションとデータベースドライバーのリファレンス
次の表は、ビルトイン db-kind
値、対応する Quarkus エクステンション、およびそれらのエクステンションで使用される JDBC ドライバーを示しています。
ビルトインデータソースの種類のいずれかを使用する場合、JDBC ドライバーとリアクティブドライバーはこの表の値と一致するように自動的に解決されます。
データベースの種類 | Quarkus エクステンション | ドライバー |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
データベースの種類 | Quarkus エクステンション | ドライバー |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
ほとんどの場合、この自動解決を適用できるため、ドライバーの設定は必要ありません。
1.4.5. リアクティブデータソース設定リファレンス
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライドできます。
設定プロパティー | 型 | デフォルト |
このデータソースに対してリアクティブデータソースを作成する場合。
環境変数: | boolean |
|
準備されたステートメントをクライアント側でキャッシュするかどうか。
環境変数: | boolean |
|
データソースの URL。 複数の値が設定されている場合、このデータソースは 1 つのサーバーではなくサーバーリストを含むプールを作成します。プールは、接続確立時のサーバー選択にラウンドロビン負荷分散を使用します。一部のドライバーは、このコンテキストで複数の値をサポートできない場合があることに注意してください。
環境変数: | list of string | |
データソースプールの最大サイズ。
環境変数: | int |
|
新しい接続オブジェクトが作成されると、プールはそれにイベントループを割り当てます。
環境変数: | int | |
すべてのサーバー証明書を信頼するかどうか。
環境変数: | boolean |
|
デフォルトで、PEM Trust 設定は無効になっています。
環境変数: | boolean |
|
信頼証明書ファイルのコンマ区切りリスト (Pem フォーマット)。
環境変数: | list of string | |
デフォルトで、JKS 設定は無効になっています。
環境変数: | boolean |
|
キーファイルのパス (JKS フォーマット)。
環境変数: | string | |
キーファイルのパスワード。
環境変数: | string | |
デフォルトで、PFX 設定は無効になっています。
環境変数: | boolean |
|
キーファイルへのパス (PFX フォーマット)。
環境変数: | string | |
キーのパスワード。
環境変数: | string | |
デフォルトで、PEM キー/証明書設定は無効になっています。
環境変数: | boolean |
|
キーファイルへのパスのコンマ区切りリスト (Pem フォーマット)。
環境変数: | list of string | |
証明書ファイルへのパスのコンマ区切りリスト (Pem フォーマット)。
環境変数: | list of string | |
デフォルトで、JKS 設定は無効になっています。
環境変数: | boolean |
|
キーファイルのパス (JKS フォーマット)。
環境変数: | string | |
キーファイルのパスワード。
環境変数: | string | |
デフォルトで、PFX 設定は無効になっています。
環境変数: | boolean |
|
キーファイルへのパス (PFX フォーマット)。
環境変数: | string | |
キーのパスワード。
環境変数: | string | |
プールされた接続が初回試行時に確立できなかった場合の再接続の試行回数。
環境変数: | int |
|
プールされた接続が初回試行時に確立できなかった場合の再接続の試行間隔。
環境変数: |
| |
サーバーのアイデンティティーをチェックする必要がある場合に使用するホスト名検証アルゴリズム。
環境変数: | string |
|
プール内で未使用の接続が閉じられるまでの、未使用状態の最大継続時間。
環境変数: |
| |
接続がプール内に留まる最大時間。この時間が経過すると接続は戻ったときに閉じられ、必要に応じて置き換えられます。
環境変数: |
| |
データソース間でプールを共有する場合は true に設定します。複数の共有プールを名前で区別できます。特定の名前を設定しない場合、
環境変数: | boolean |
|
プール名を設定します。この名前は、プールがデータソース間で共有される場合に使用され、それ以外では無視されます。
環境変数: | string | |
新しい接続の開始時に、リアクティブ SQL クライアントを介してデータベースに直接渡されるその他の未指定のプロパティー。
環境変数: | Map<String,String> |
duration の値を書き込むには、標準の java.time.Duration
フォーマットを使用します。詳細は、Duration#parse() Java API ドキュメント を参照してください。
数字で始まる簡略化されたフォーマットも使用できます。
- 値が数値のみの場合は、秒単位の時間を表します。
-
数字の後に
ms
が続く値は、ミリ秒単位の時間を表します。
その他の場合は、解析のために簡略化されたフォーマットが java.time.Duration
フォーマットに変換されます。
-
数字の後に
h
、m
、またはs
が続く値には、接頭辞PT
が付きます。 -
数字の後に
d
が続く値は、接頭辞P
が付きます。
1.4.5.1. リアクティブ MariaDB/MySQL 固有の設定
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライド可能
設定プロパティー | 型 | デフォルト |
型 | デフォルト | |
接続の charset。
環境変数: | string | |
接続の照合。
環境変数: | string | |
サーバーへの接続に必要なセキュリティー状態。 MySQL Reference Manual を参照してください。
環境変数: |
|
|
接続タイムアウト (秒単位)
環境変数: | int | |
クライアントが使用する必要がある認証プラグイン。デフォルトでは、最初のハンドシェイクパケットでサーバーが指定したプラグイン名が使用されます。
環境変数: |
|
|
パイプライン化できる未完了のデータベースコマンドの最大数。デフォルトでは、パイプライン化は無効になっています。
環境変数: | int | |
実際に変更された行数ではなく、UPDATE ステートメントの WHERE 句に一致する行の数を返すかどうか。
環境変数: | boolean |
|
1.4.5.2. リアクティブ Microsoft SQL サーバー固有の設定
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライド可能
設定プロパティー | 型 | デフォルト |
型 | デフォルト | |
TDS パケットの必要なサイズ (バイト単位)。
環境変数: | int | |
SSL/TLS が有効かどうか。
環境変数: | boolean |
|
1.4.5.3. リアクティブ Oracle 固有の設定
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライド可能
設定プロパティー | 型 | デフォルト |
設定プロパティーはありません。 |
1.4.5.4. リアクティブ PostgreSQL 固有の設定
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライド可能
設定プロパティー | 型 | デフォルト |
型 | デフォルト | |
パイプライン化できる未完了のデータベースコマンドの最大数。
環境変数: | int | |
クライアントの SSL 動作モード。 Protection Provided in Different Modes を参照してください。
環境変数: |
|
|
レベル 7 のプロキシーは、実際のデータベースへの複数の接続でクエリーの負荷を分散できます。これが起こると、クライアントはセッションアフィニティーの欠如によって混乱し、ERROR: unnamed prepared statement does not exist (26000) のような望ましくないエラーが発生する可能性があります。Using a level 7 proxy を参照してください。
環境変数: | boolean |
|
1.4.6. リアクティブデータソース URL リファレンス
1.4.6.1. DB2
db2://[user[:[password]]@]host[:port][/database][?<key1>=<value1>[&<key2>=<value2>]]
- 例
-
db2://dbuser:secretpassword@database.server.com:50000/mydb
現在、クライアントは次のパラメーターキーをサポートしています。
-
host
-
port
-
user
-
password
-
database
接続 URL でパラメーターを設定すると、デフォルトのプロパティーがオーバーライドされます。
1.4.6.2. Microsoft SQL サーバー
sqlserver://[user[:[password]]@]host[:port][/database][?<key1>=<value1>[&<key2>=<value2>]]
- 例
-
sqlserver://dbuser:secretpassword@database.server.com:1433/mydb
現在、クライアントは次のパラメーターキーをサポートしています。
-
host
-
port
-
user
-
password
-
database
接続 URL でパラメーターを設定すると、デフォルトのプロパティーがオーバーライドされます。
1.4.6.3. MySQL / MariaDB
mysql://[user[:[password]]@]host[:port][/database][?<key1>=<value1>[&<key2>=<value2>]]
- 例
-
mysql://dbuser:secretpassword@database.server.com:3211/mydb
現在、クライアントは次のパラメーターキーをサポートしています (大文字と小文字は区別されません)。
-
host
-
port
-
user
-
password
-
schema
-
socket
-
useAffectedRows
接続 URL でパラメーターを設定すると、デフォルトのプロパティーがオーバーライドされます。
1.4.6.4. Oracle
1.4.6.4.1. EZConnect フォーマット
oracle:thin:@[[protocol:]//]host[:port][/service_name][:server_mode][/instance_name][?connection properties]
- 例
-
oracle:thin:@mydbhost1:5521/mydbservice?connect_timeout=10sec
1.4.6.4.2. TNS エイリアスフォーマット
oracle:thin:@<alias_name>[?connection properties]
- 例
-
oracle:thin:@prod_db?TNS_ADMIN=/work/tns/
1.4.6.5. PostgreSQL
postgresql://[user[:[password]]@]host[:port][/database][?<key1>=<value1>[&<key2>=<value2>]]
- 例
-
postgresql://dbuser:secretpassword@database.server.com:5432/mydb
現在、クライアントは以下をサポートしています。
パラメーターキー:
-
host
-
port
-
user
-
password
-
dbname
-
sslmode
-
以下のような追加プロパティー:
-
application_name
-
fallback_application_name
-
search_path
-
options
-
接続 URL でパラメーターを設定すると、デフォルトのプロパティーがオーバーライドされます。