第2章 JDBC データソースの設定
JDBC は、Java ベースのアプリケーションで最も一般的に使用されているデータベース接続 API です。JDBC データソースドライバーを使用して、アプリケーションをリレーショナルデータベースに接続できます。
JDBC データソースを設定するには、以下を行う必要があります。
-
quarkus-agroalエクステンションのアプリケーションへの追加 -
アプリケーションへの
db-kindエクステンションの追加 - アプリケーションがデータソースにアクセスするために使用する JDBC URL の指定
以下の例は、postgresql データソースをアプリケーションに接続し、データベースのアクセス認証情報と JDBC URL を指定する方法を示しています。JDBC URL の指定方法に関する詳細は、「データソースの JDBC URL の設定」 を参照してください。
JDBC データソースの設定例
2.1. JDBC データソースの Quarkus エクステンションのインストール リンクのコピーリンクがクリップボードにコピーされました!
JDBC データソースを設定するには、quarkus-agroal エクステンションおよび Quarkus JDBC データベースドライバーエクステンションをインストールする必要があります。追加する JDBC データベースドライバーは、使用する JDBC データベースのタイプと一致する必要があります。
以下の手順では、JDBC データソースの Quarkus エクステンションをインストールする方法を説明します。
前提条件
- Quarkus Maven プロジェクトがあること。
-
データソースの
db-kindプロパティーを設定していること。
手順
- Quarkus プロジェクトディレクトリーに移動します。
quarkus-agroalエクステンションをプロジェクトに追加します。./mvnw quarkus:add-extension -Dextensions="agroal"
./mvnw quarkus:add-extension -Dextensions="agroal"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 適切なタイプのリレーショナルデータベースドライバーの Quarkus エクステンションをアプリケーションに追加します。
./mvnw quarkus:add-extension -Dextensions="<extension>"
./mvnw quarkus:add-extension -Dextensions="<extension>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、PostgreSQL データベースドライバーエクステンションを追加するには、以下を使用します。
./mvnw quarkus:add-extension -Dextensions="jdbc-postgresql"
./mvnw quarkus:add-extension -Dextensions="jdbc-postgresql"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Hibernate ORM を使用している場合は、Agroal エクステンションの依存関係を明示的に追加する必要はありません。Agroal は、Hibernate ORM エクステンションの推移的な依存関係です。Hibernate ORM で JDBC データソースドライバーを使用する必要があります。
2.2. データソースの JDBC URL の設定 リンクのコピーリンクがクリップボードにコピーされました!
JDBC データソースの設定を完了するには、JDBC URL を設定する必要があります。以下の手順は、JDBC URL の設定方法を示しています。
前提条件
- Quarkus Maven プロジェクトがあること。
- 対応するデータソースドライバーをアプリケーションに追加していること。
-
データソースの
db-kindプロパティーを設定していること。
手順
- Quarkus プロジェクトディレクトリーに移動します。
-
src/main/resources/application.propertiesファイルを開きます。 データソースの JDBC URL に一致するように、
quarkus.datasource.jdbc.urlプロパティーの値を設定します。quarkus.datasource.jdbc.url=<JDBC_URL>
quarkus.datasource.jdbc.url=<JDBC_URL>Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、PostgreSQL データソースの JDBC URL を設定するには、以下を使用します。
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/hibernate_orm_test
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/hibernate_orm_testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. Hibernate ORM を使用した JDBC データソースの取得 リンクのコピーリンクがクリップボードにコピーされました!
Hibernate ORM を使用している場合は、アプリケーションが自動的に認識し、利用可能な JDBC データソースに接続します。アプリケーションコードでデータソースにアクセスするには、CDI Bean として取得できます。
前提条件
- Quarkus Maven プロジェクトがあること。
- Hibernate ORM がインストールされていること。
手順
アプリケーションコードでデータソースにアクセスするには、
@InjectアノテーションをdataSourceプロパティーに追加します。import javax.sql.DataSource; @Inject DataSource dataSource;
import javax.sql.DataSource; @Inject DataSource dataSource;Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. 同時設定での JDBC データソースの無効化 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの同じデータソース用に、JDBC ドライバーエクステンションとリアクティブドライバーエクステンションを同時に設定することができます。同時設定で JDBC データソースドライバーを無効にできることから、アプリケーションがリアクティブデータソースドライバーを使用するように強制できます。
前提条件
- Quarkus Maven プロジェクトがあること。
- アプリケーションに、JDBC データソースドライバーとリアクティブデータソースドライバーを同時に設定していること。
手順
- Quarkus プロジェクトディレクトリーに移動します。
-
src/main/resources/application.propertiesファイルを開きます。 quarkus.datasource.jdbcプロパティーをfalseに設定して JDBC データソースを無効にします。quarkus.datasource.jdbc=false
quarkus.datasource.jdbc=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. ビルトインドライバーエクステンションのない JDBC ドライバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
ビルトインドライバーエクステンションのない JDBC ドライバーおよびデータベースを使用できます。以下の手順は、ビルトインエクステンションのない JDBC ドライバーの設定方法を示しています。
Quarkus アプリケーションを JVM モードで使用している間は、任意の JDBC ドライバーを使用できます。Quarkus をネイティブ実行可能ファイルとしてコンパイルすると、含まれていない JDBC ドライバーが正しく機能しない可能性があります。
前提条件
- Quarkus Maven プロジェクトがあること。
- Quarkus アプリケーションが JVM モードになっていること。
-
プロジェクトの
pom.xmlファイルに、依存関係として使用するデータソースドライバーが追加されていること。
手順
- Quarkus プロジェクトディレクトリーに移動します。
-
src/main/resources/application.propertiesファイルを開きます。 db-kindプロパティーの値をotherに設定します。quarkus.datasource.db-kind=other
quarkus.datasource.db-kind=otherCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用するドライバーエクステンションのタイプに一致するように、
quarkus.datasource.jdbc.driverプロパティーの値を設定します。quarkus.datasource.jdbc.driver=<driver>
quarkus.datasource.jdbc.driver=<driver>Copy to Clipboard Copied! Toggle word wrap Toggle overflow データソースの JDBC URL に一致するように、
quarkus.datasource.jdbc.urlプロパティーの値を設定します。quarkus.datasource.jdbc.url=<JDBC_URL>
quarkus.datasource.jdbc.url=<JDBC_URL>Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、Quarkus は OpenTracing ドライバーのビルトインドライバーエクステンションを提供しません。
opentracing-jdbcアーティファクトをpom.xmlファイルに追加し、application.propertiesファイルに以下のプロパティーを設定して OpenTracing ドライバーを設定します。quarkus.datasource.db-kind=postgresql quarkus.datasource.jdbc.url=jdbc:tracing:postgresql://localhost:5432/mydatabase quarkus.datasource.jdbc.driver=io.opentracing.contrib.jdbc.TracingDriver quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQLDialect
quarkus.datasource.db-kind=postgresql quarkus.datasource.jdbc.url=jdbc:tracing:postgresql://localhost:5432/mydatabase quarkus.datasource.jdbc.driver=io.opentracing.contrib.jdbc.TracingDriver quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQLDialectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. 複数の JDBC データソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
Agroal を使用して、Quarkus アプリケーションの複数の JDBC データソースを設定できます。
Hibernate ORM エクステンションを使用する場合は、永続データストレージユニットを 1 つだけアプリケーションに追加できます。Hibernate ORM エクステンションによって管理される永続データストレージユニットは、デフォルトの JDBC データソースタイプを使用します。
前提条件
- Quarkus Maven プロジェクトがあること。
- JDBC データソースが複数あること。
手順
- Quarkus プロジェクトディレクトリーに移動します。
src/main/resources/application.propertiesファイルで、各データソースに以下のプロパティーを設定します。-
データソースの名前(たとえば、データソースの名前に
usersを選択した場合、データソースの完全修飾参照はquarkus.datasource.usersになります) -
データソースのタイプに一致する
db-kindプロパティー -
データソースのユーザー名を指定する
quarkus.datasource.username -
データソースの JDBC 接続 URL を指定する
quarkus.datasource.jdbc.url -
データソースの接続プールで保持される接続の最小数を指定する
quarkus.datasource.jdbc.min-sizeプロパティー データソースの接続プールで保持される接続の最大数を指定する
quarkus.datasource.jdbc.max-sizeプロパティー以下の例は、3 つの JDBC データソースの完全な設定を示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
データソースの名前(たとえば、データソースの名前に
@Injectアノテーションを各クラスプロパティーに追加して、複数のデータソースを注入します。アプリケーションに複数のデータソースを設定する場合は、データソースの名前を持つio.quarkus.agroal.DataSource修飾子を値として各DataSourceクラスに追加してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow