ノート:

TASK 3: VSコードでのMicronautアプリケーションの作成

この演習では、Micronautアプリケーションを作成し、Oracle Autonomous Databaseと通信するようにアプリケーションを構成します。

『GraalVM Tools for Micronaut Extension』は、時間を節約するプロビジョニング・プロセスの一環として、VSコードに事前にインストールされています。Micronautのサポートには、VSコード内のインタフェースを介してMicronautプロジェクトを作成できるMicronautの起動アプリケーションも含まれています。依存関係として事前インストールされているGraalVM Tools for Java Extensionと組み合せて、GraalVM EnterpriseでMicronautプロジェクトを実行し、VS Codeから直接デバッグできます。

見積時間: 15分

タスク・コンテンツ

このタスクでは、次のことを行います。

ステップ1:新しいMicronautアプリケーションの作成

  1. リモートホストに接続された「VS Code」ウィンドウで、「View」、「Commandパレット」(コマンドパレットは、F1を押すか、Linuxの Ctrl+Shift+Pホットキーの組み合わせを押して開くことができ、さらに「Micronaut」を検索します。

  2. 「ミクロノート: Micronautプロジェクトの作成」を選択して、Micronautプロジェクトを作成します。

  3. ウィザード・プロンプトに従ってプロジェクトを構成します。

    • 使用可能な最新のMicronautバージョンを選択し、SNAPSHOTのオプションを選択しないでください

    • アプリケーション・タイプを選択します: Micronautアプリケーション

    • 使用可能な最新のJavaバージョンを選択します。このラボの作成時には、GraalVM EE 22.0.0、Java 17となっています

    • プロジェクト名を入力します: ocidemo

    • 基本パッケージ名 com.exampleを指定します

    • プロジェクトの言語を選択: Java

    • プロジェクトの機能(データベース: Micronaut Data JDBCおよびデータベース: Oracle Databaseサーバー)を追加します。「OK」をクリックします

    • ビルド・ツールとしてMavenまたはGradleを選択します

    • テスト・フレームワークを選択: JUnit

    • リモートホストマシン上の宛先フォルダを選択してプロジェクトファイルを保存します。/home/opc/と入力し、OKを押して確定します。

    新しく作成したMicronautプロジェクト・ファイルは、現在のワークスペースでVSコードに開きます。

ステップ2: Oracle Autonomous Databaseインスタンスに接続するためのアプリケーションの構成

Oracle Cloud Autonomous Databaseの接続情報および資格証明は、Oracle Walletに格納されます。Micronautを使用すると、ウォレットを自動的に生成およびダウンロードし、データ・ソースを構成できます。ウォレットから自動データ・ソース構成を使用するには、次のステップを実行します。

  1. 左側のパネルでプロジェクト・フォルダ名をクリックし、src/main/resources/の下のapplication.ymlファイルを開きます。

  2. デフォルトのファイル・コンテンツを次のデータで置き換えます。

    micronaut:
      application:
        name: ocidemo
    datasources:
      default:
        ocid: ocid1.autonomousdatabase.oc1...
        walletPassword: WALLET_PASSWORD
        username: DATABASE_USERNAME 
        password: DATABASE_PASSWORD
    
  3. デフォルトのデータソース接続設定を変更します。

    • ブラウザ・ウィンドウに戻り、Oracle Autonomous Databaseインスタンス・コンソールが表示されます。「Autonomous Database情報」→「一般情報」で、インスタンスのocid値を見つけてコピーします。

    Oracle Autonomous DatabaseインスタンスID

    • VSコードに戻り、application.ymlocidフィールドのOCIDに戻ります。
    • walletPasswordは、ウォレット内のキーを暗号化するもので、任意に選択できます(8文字以上で、少なくとも1つの文字と1つの数字または1つの特殊文字を含める必要があります)。
    • usernameおよびpasswordの値は、前の演習でデータベース・スキーマ・ユーザーを作成する際に選択した名前とパスワードである必要があります。

注:VSコードファイルは自動的に保存されません。変更を特定のファイルに保存するには、「ファイル」「保存」、または「すべて保存」の順に移動して、編集内容を大量のファイルに保存します。または、CTLR +Sと入力します。

ステップ3: Oracle Autonomous Database JDBCドライバの構成

プロジェクトのルートにあるpom.xmlファイルで、Oracle Databaseドライバの正しいバージョンと必要なモジュールを指定する必要があります。

  1. Oracle Database BOM 21.1.0.0以上を適用します。

    Mavenを使用した場合は、プロジェクトのルートでpom.xmlを開き、repositoriesセクションとdependenciesセクションの間に次を挿入します。

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.oracle.database.jdbc</groupId>
          <artifactId>ojdbc-bom</artifactId>
          <version>21.1.0.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Gradleを使用した場合は、プロジェクトのルートでbuild.gradleを開き、dependenciesブロックの最後に次を挿入します。

    implementation platform("com.oracle.database.jdbc:ojdbc-bom:21.1.0.0")
    
  2. micronaut-oraclecloud-atpモジュールへの依存性を追加します。

    Mavenを使用した場合は、pom.xmlを開き、dependenciesブロック内に次を挿入します。

    <dependency>
        <groupId>io.micronaut.oraclecloud</groupId>
        <artifactId>micronaut-oraclecloud-atp</artifactId>
        <version>1.2.1</version>
        <scope>runtime</scope>
    </dependency>
    

    Gradleを使用した場合は、build.gradleを開き、dependenciesブロックの最後に次を追加します。

    runtimeOnly("io.micronaut.oraclecloud:micronaut-oraclecloud-atp")
    
  3. OCI SDKロギングを有効にします。

    Mavenを使用した場合は、pom.xmlを開き、dependenciesブロック内に次の依存性を追加します。

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.13</version>
      <scope>runtime</scope>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>    
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.36</version>
        <scope>runtime</scope>
    </dependency>
    

    Gradleを使用した場合は、dependenciesブロックのすぐ上に次の構成を挿入します。

    configurations.all {
        resolutionStrategy.dependencySubstitution {
            substitute(module('commons-logging:commons-logging'))
                    .using(module('org.slf4j:jcl-over-slf4j:1.7.36'))
        }
    }
    

ステップ4:スキーマを作成するためのフライアウェイの構成

次に、新しいバージョンのアプリケーションとともにスキーマを段階的に展開できるように、データベース・スキーマを管理およびバージョニングするSQLスクリプトを定義できるオープン・ソースのFlywayデータベース移行ツールキットのサポートを有効にする必要があります。

  1. micronaut-flywayへの依存性を追加します。

    Mavenを使用した場合は、pom.xmlを開き、dependenciesブロック内に次を挿入します。

    <dependency>
        <groupId>io.micronaut.flyway</groupId>
        <artifactId>micronaut-flyway</artifactId>
        <scope>runtime</scope>
    </dependency>
    

    Gradleを使用した場合は、build.gradleを開き、dependenciesブロックの最後に次を追加します。

    runtimeOnly("io.micronaut.flyway:micronaut-flyway")
    
  2. src/main/resources/application.ymlファイルに切り替えて、行10のdatasourcesセクションのすぐ下に次の構成を追加し、起動時にFlywayを実行できるようにします。

    flyway:
      datasources:
        default:
          enabled: true
    
  3. src/test/resources/の下にあるapplication-test.ymlファイルを開き、テスト構成を含むFlywayの次のエントリでファイルのデフォルト・コンテンツを置換し、アプリケーションの起動時にスキーマを消去するようにFlywayを設定して、テストを最新データで実行するようにします。

    flyway:
      datasources:
        default:
          clean-schema: true
    

注:実際のシナリオでは、テストを実行する別のデータベースを設定します。

ステップ5: SQL移行スクリプトの定義

次のステップでは、アプリケーションの初期スキーマを作成するSQL移行スクリプトを定義します。

  1. src/main/resourcesの下にdb/migrationフォルダを作成します。src/main/resourcesを右クリックしてコンテンツ・メニューを展開し、「新規フォルダ」を選択します。

    VSコードに新しいフォルダを作成

  2. SQLファイルを作成します。src/main/resources/db/migration/を右クリックしてコンテンツ・メニューを展開し、「新規ファイル」を選択します。V1__create-schema.sqlという名前を付けます。

  3. 次のSQLコードをファイルに追加します。

    CREATE TABLE "PET" ("ID" VARCHAR(36),"OWNER_ID" NUMBER(19) NOT NULL,"NAME" VARCHAR(255) NOT NULL,"TYPE" VARCHAR(255) NOT NULL);
    CREATE TABLE "OWNER" ("ID" NUMBER(19) PRIMARY KEY NOT NULL,"AGE" NUMBER(10) NOT NULL,"NAME" VARCHAR(255) NOT NULL);
    CREATE SEQUENCE "OWNER_SEQ" MINVALUE 1 START WITH 1 NOCACHE NOCYCLE;
    

    前述のSQLスクリプトは、所有者とそのペットのデータをAutonomous Databaseに格納するためのownerおよびpet表を作成します。

次のタスクに進むことができます。

さらに学ぶ