참고:

TASK 3: VS 코드에서 Micronaut 응용 프로그램 생성

이 실습에서는 Micronaut 애플리케이션을 생성하고 Oracle Autonomous Database와 통신하도록 애플리케이션을 구성합니다.

시간을 절약하기 위한 프로비저닝 프로세스의 일부로 The 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 코드 창에서 원격 호스트에 연결한 다음 보기, 명령 팔레트로 이동합니다(F1을 누르거나 Linux의 Ctrl+Shift+P 핫 키 조합을 눌러 명령 팔레트를 열 수도 있음). "Micronaut"을 검색합니다.

  2. Micronaut: Micronaut 프로젝트 생성을 선택하여 Micronaut 프로젝트를 생성합니다.

  3. 마법사 프롬프트에 따라 프로젝트를 구성합니다.

    • 사용 가능한 최신 Micronaut 버전을 선택하고 SNAPSHOT을 사용하여 옵션을 선택하지 마십시오.

    • 응용 프로그램 유형을 선택합니다. Micronaut 응용 프로그램

    • 사용 가능한 최신 Java 버전을 선택하십시오. 이 실습을 만들 때 GraalVM EE 22.0.0, Java 17입니다.

    • 프로젝트 이름 ocidemo를 제공합니다.

    • 기본 패키지 이름 com.example을 제공합니다.

    • 프로젝트 언어 선택: Java

    • 프로젝트의 기능 Database: Micronaut Data JDBCDatabase: Oracle Database Server를 추가합니다. 확인을 누릅니다.

    • 빌드 툴로 Maven 또는 Gradle 선택

    • 테스트 프레임워크 선택: JUnit

    • 원격 호스트 시스템에서 대상 폴더를 선택하여 프로젝트 파일을 저장합니다. 확인하려면 /home/opc/을 입력하고 OK를 누릅니다.

    새로 생성된 Micronaut 프로젝트 파일이 VS 코드의 현재 작업 영역에서 열립니다.

2단계: Oracle Autonomous Database 인스턴스에 연결할 애플리케이션 구성

Oracle Cloud Autonomous Database 연결 정보 및 인증서는 Oracle Wallet에 저장됩니다. Micronaut을 사용하면 자동으로 전자 지갑을 생성 및 다운로드하고 데이터 소스를 구성할 수 있습니다. 다음 단계를 완료하여 전자 지갑(Wallet)에서 자동 데이터 소스 구성을 사용합니다.

  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 Information > General Information에서 instance의 ocid 값을 찾아 복사합니다.

    Oracle Autonomous Database 인스턴스 ID

    • ocid 필드의 VS 코드 및 application.yml에서 OCID로 돌아갑니다.
    • walletPassword는 전자 지갑 내에 키를 암호화하며 원하는 대로 선택할 수 있습니다. 최소 8자 이상이어야 하며 문자와 숫자 하나 또는 특수 문자를 하나 이상 포함해야 합니다.
    • usernamepassword 값은 이전 연습에서 데이터베이스 스키마 유저를 생성할 때 선택한 이름과 암호여야 합니다.

참고: VS 코드 파일은 자동으로 저장되지 않습니다. 변경 사항을 특정 파일에 저장하려면 파일, 저장 또는 모두 저장으로 이동하여 여러 파일에 대한 편집 사항을 저장합니다. 또는 CTLR +S를 입력합니다.

3단계: Oracle Autonomous Database JDBC 드라이버 구성

프로젝트 루트의 pom.xml 파일에 올바른 버전의 Oracle Database 드라이버와 필요한 모듈을 지정해야 합니다.

  1. Oracle Database BOM 21.1.0.0 이상을 적용합니다.

    Maven을 사용한 경우 프로젝트 루트에서 pom.xml을 열고 repositoriesdependencies 섹션 사이에 다음을 삽입합니다.

    <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:
      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에 저장하는 ownerpet 테이블을 생성합니다.

이제 다음 작업 진행할 수 있습니다.

더 알아보기