第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 の概要 を参照してください。
詳細とオプションの設定は、Dev Services for databases を参照してください。
1.1.2. JDBC データソースを設定する
選択したデータベースに応じて、適切な JDBC エクステンションを追加します。
-
quarkus-jdbc-db2
-
quarkus-jdbc-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-db2-client
-
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
- この設定値は、クラスパス上に複数のリアクティブドライバーエクステンションがある場合にのみ必要です。