4-3. 애플리케이션 Java Source 변환 작업 메뉴 상세 분석

메뉴명

애플리케이션 Java Source 변환 작업

목적

Oracle 의존성을 가진 Java 소스 코드를 Target DBMS에 호환되도록 변환하는 작업을 수행합니다. Oracle JDBC 드라이버, Oracle 전용 SQL 함수, PL/SQL 구문 등을 표준 JDBC 또는 Target DBMS 호환 코드로 변환합니다.

실행 흐름

initOMA.sh 
  → execute_java_transform() 
    → q chat --trust-all-tools "$OMA_BASE_DIR/bin/postTransform/convertOracleJava.md"

상세 분석

1. execute_java_transform() 함수

# 위치: initOMA.sh (577행)
# 실행파일: q chat --trust-all-tools "$OMA_BASE_DIR/bin/postTransform/convertOracleJava.md"

2. convertOracleJava.md (핵심 프롬프트 파일)

# 위치: $OMA_BASE_DIR/bin/postTransform/convertOracleJava.md
# 주요 기능: Amazon Q Chat을 통한 대화형 Java 소스 변환 작업
# 실행방식: Amazon Q Chat 프롬프트로 사용

3. 주요 환경변수 매핑

# 입력 관련 환경변수
JAVA_SOURCE_FOLDER              # Java 소스 코드 디렉토리 (사용자 지정)
APP_TOOLS_FOLDER               # 애플리케이션 도구 디렉토리
APP_TRANSFORM_FOLDER           # 변환 작업 디렉토리
TARGET_DBMS_TYPE              # 대상 DBMS 타입 (postgres/mysql)

# 출력 관련 환경변수  
APP_TRANSFORM_FOLDER           # 변환 로그 저장 디렉토리

# 기타 설정 환경변수
OMA_BASE_DIR                  # OMA 기본 디렉토리
APPLICATION_NAME              # 프로젝트명

4. 작업 단계

4.1 대화형 소스 디렉토리 설정

  • 사용자 입력 필수: Java 소스 파일이 위치한 디렉토리 경로 지정
  • 디렉토리 검증: 입력된 경로의 존재 여부 및 Java 파일 포함 여부 확인
  • 재귀 스캔: 지정된 디렉토리와 모든 하위 디렉토리에서 *.java 파일 검색
  • 사용자 확인: 스캔 결과 및 설정 내용에 대한 사용자 승인

4.2 Oracle 의존성 식별

  • 패턴 검색: Oracle 전용 코드 패턴 자동 감지
    • Oracle JDBC 드라이버 (oracle.jdbc.*)
    • Oracle 전용 SQL 함수 및 구문
    • Oracle 데이터 타입 및 PL/SQL 구문
    • Oracle 연결 문자열 및 속성
    • Oracle 전용 어노테이션 및 import
    • Oracle 독점 API 및 유틸리티
  • 파일별 분류: Oracle 의존성 타입별 파일 분류
  • 변환 복잡도 평가: 각 파일의 변환 난이도 분석

4.3 대화형 승인 프로세스

  • 파일별 개별 승인: 각 파일의 변환 내용을 사용자에게 제시하고 승인 요청
  • 변경 사항 미리보기: 변환 전후 코드 비교 제공
  • 백업 파일 생성: 원본 파일의 타임스탬프 백업 생성
  • 안전한 변환: 사용자 승인 후에만 실제 파일 수정 수행

4.4 코드 변환 실행

  • 표준 JDBC 변환: Oracle JDBC를 표준 JDBC 또는 Target DBMS 드라이버로 변환
  • SQL 함수 변환: Oracle 전용 함수를 Target DBMS 호환 함수로 변환
  • 데이터 타입 변환: Oracle 데이터 타입을 표준 또는 Target DBMS 타입으로 변환
  • 연결 설정 변환: Oracle 연결 문자열을 Target DBMS 연결 설정으로 변환

5. 변환 대상 Oracle 의존성

5.1 데이터베이스 연결

  • oracle.jdbc.OracleDriver → 표준 JDBC 드라이버
  • Oracle 연결 URL → Target 데이터베이스 URL
  • Oracle 전용 연결 속성 → 표준 또는 Target DBMS 속성

5.2 SQL 구문 및 함수

  • Oracle 전용 함수 (NVL, DECODE, ROWNUM 등)
  • PL/SQL 블록 및 프로시저
  • Oracle 날짜/시간 함수
  • 계층형 쿼리 (CONNECT BY)
  • Oracle 전용 데이터 타입 (VARCHAR2, NUMBER 등)

5.3 프레임워크 통합

  • Oracle 전용 Hibernate 방언
  • Oracle 시퀀스 및 Identity 컬럼
  • Oracle 전용 JPA 어노테이션

6. 안전성 및 복구

6.1 백업 관리

  • 백업 위치: 원본 파일과 동일한 디렉토리
  • 백업 형식: [파일명]_backup_YYYYMMDD_HHMMSS.[확장자]
  • 예시: DatabaseConnection.javaDatabaseConnection_backup_20250729_180000.java

6.2 임시 파일 관리

  • 위치: 모든 임시 파일은 /tmp 디렉토리에 생성
  • 명명 규칙: /tmp/oracle_java_conversion_[구성요소]_[타임스탬프].[확장자]
  • 자동 정리: 작업 완료 또는 취소 시 임시 파일 자동 삭제

6.3 롤백 기능

  • 자동 백업 복원: 심각한 오류 발생 시 자동 백업 복원
  • 부분 롤백: 개별 파일 단위 롤백 지원
  • 변경 로그: 수동 복구를 위한 상세 변경 로그 제공

결과 파일

변환된 Java 소스 파일

# 출력 경로: 사용자 지정 JAVA_SOURCE_FOLDER

1. [원본파일명].java           # Oracle 의존성이 제거된 변환된 Java 파일
2. [원본파일명]_backup_YYYYMMDD_HHMMSS.java  # 원본 파일 백업

로그 및 문서

# 출력 경로: $APP_TRANSFORM_FOLDER

1. ConvertJava.log             # 변환 작업 상세 로그
   - 타임스탬프별 변경 내역
   - 변경 전후 코드 스니펫
   - 변경 사유 및 영향 분석

임시 작업 파일 (작업 중에만 존재)

# 출력 경로: /tmp

1. /tmp/oracle_java_conversion_[타임스탬프]_analysis.txt     # 분석 결과
2. /tmp/oracle_java_conversion_[타임스탬프]_backup_list.txt  # 백업 파일 추적
3. /tmp/oracle_java_conversion_[타임스탬프]_changes.log      # 임시 변경 로그
4. /tmp/oracle_java_conversion_[타임스탬프]_diff.txt         # 코드 차이 미리보기

환경 변수 의존성

필수 환경변수

  • 기본 경로: OMA_BASE_DIR
  • 도구 경로: APP_TOOLS_FOLDER, APP_TRANSFORM_FOLDER
  • DBMS 설정: TARGET_DBMS_TYPE

대화형 설정 환경변수

  • Java 소스 경로: JAVA_SOURCE_FOLDER (사용자가 대화형으로 지정)

선택적 환경변수

  • 프로젝트 정보: APPLICATION_NAME

사전 조건

  • SQL 변환 작업이 완료되어 있어야 함 (선택사항)
  • Java 소스 코드가 포함된 디렉토리 준비
  • Amazon Q Chat이 설치되고 사용 가능해야 함
  • convertOracleJava.md 프롬프트 파일이 존재해야 함
  • 충분한 디스크 공간 (백업 파일 생성용)

다음 단계

이 단계의 결과물은 다음 용도로 사용됩니다:

  • 애플리케이션 배포: Target DBMS 환경에서 실행 가능한 Java 애플리케이션
  • 통합 테스트: 변환된 Java 코드와 SQL의 통합 테스트
  • 성능 최적화: Target DBMS 특성에 맞는 코드 최적화

주요 특징

  • 대화형 처리: 사용자와의 실시간 상호작용을 통한 안전한 변환
  • AI 기반 변환: Amazon Q Chat을 활용한 지능형 코드 변환
  • 개별 파일 처리: 각 파일을 독립적으로 분석하고 변환
  • 컨텍스트 인식: 코드의 사용 맥락을 고려한 의미 보존 변환
  • 안전성 우선: 필수 백업 및 롤백 기능으로 데이터 손실 방지
  • 품질 보증: 변경 전후 비교 및 테스트 권장사항 제공
  • Target DBMS 최적화: PostgreSQL/MySQL 등 Target DBMS 특성에 맞는 변환
  • 표준 준수: ANSI SQL 및 JDBC 표준 우선 적용

중요 주의사항

⚠️ Target Java Source Folder 지정 필수

  • Java Source 변환 작업 시 변환할 Java 소스 코드가 위치한 디렉토리를 반드시 지정해야 함
  • 예시 경로: /workspace/project/src/main/java, /home/user/myproject/backend
  • 재귀적 스캔으로 모든 하위 디렉토리의 Java 파일 처리

⚠️ 대화형 승인 필수

  • 각 파일의 변환 내용에 대해 사용자의 명시적 승인 필요
  • 배치 처리 방식이 아닌 파일별 개별 검토 및 승인 프로세스

⚠️ 백업 파일 관리

  • 모든 원본 파일은 자동으로 타임스탬프 백업 생성
  • 백업 파일은 원본과 동일한 디렉토리에 저장
  • 작업 완료 후 백업 파일 보관 여부 결정 필요

⚠️ Amazon Q Chat 컨텍스트 관리

  • 작업 중 Amazon Q Chat의 컨텍스트 손실 가능성 모니터링 필요
  • 비정상 동작 감지 시 즉시 중단 후 재시작 권장
  • 원래 목적과 다른 작업 시도 시 CTRL+C로 즉시 중단

⚠️ 변환 후 검증

  • 변환된 코드의 구문 검증 및 컴파일 확인 필요
  • 기본 기능 테스트 수행 권장
  • Target DBMS 환경에서의 통합 테스트 필수

Back to top

Copyright © 2024 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.