1-1. 애플리케이션 분석 메뉴 상세 분석
메뉴명
1. 애플리케이션 분석
목적
Java 소스 코드 및 MyBatis Mapper 파일을 체계적으로 분석하여 Oracle에서 다른 DBMS로의 마이그레이션을 위한 기초 분석 데이터를 생성
실행 흐름
initOMA.sh
→ execute_app_analysis()
→ $OMA_BASE_DIR/bin/processAppAnalysis.sh
→ q chat --trust-all-tools --no-interactive < $APP_TOOLS_FOLDER/appAnalysis.md
상세 분석
1. execute_app_analysis() 함수
# 위치: initOMA.sh (218-240행)
# 실행파일: $OMA_BASE_DIR/bin/processAppAnalysis.sh
2. processAppAnalysis.sh
# 위치: $OMA_BASE_DIR/bin/processAppAnalysis.sh
# 환경변수 확인: APPLICATION_NAME
# 실행명령: q chat --trust-all-tools --no-interactive < $APP_TOOLS_FOLDER/appAnalysis.md
3. appAnalysis.md (핵심 분석 파일)
# 위치: $APP_TOOLS_FOLDER/appAnalysis.md
# 환경변수: APP_TOOLS_FOLDER (애플리케이션 도구 폴더)
4. 주요 환경변수 매핑
# 입력 소스 경로
JAVA_SOURCE_FOLDER # Java 소스 코드 루트 디렉토리
SOURCE_SQL_MAPPER_FOLDER # MyBatis SQL Mapper XML 파일 디렉토리
# 출력 결과 경로
APPLICATION_FOLDER # 애플리케이션 분석 결과 저장 루트 디렉토리
APP_TOOLS_FOLDER # OMA 애플리케이션 도구 및 스크립트 디렉토리
# 기타 설정
TARGET_DBMS_TYPE # 타겟 DBMS 타입 (예: postgres, mysql)
TRANSFORM_JNDI # 변환 대상 JNDI 식별자 (예: jdbc)
APPLICATION_NAME # 프로젝트/애플리케이션 이름
5. 분석 작업 단계
5.1 환경 정보 확인 및 디렉토리 생성
# 출력 디렉토리 생성
mkdir -p $APPLICATION_FOLDER/discovery
5.2 애플리케이션 기본 정보 수집
- 프로젝트 정보 식별: Maven/Gradle/Traditional Web 프로젝트 타입 분석
- 기술 스택 분석: Spring Framework, Java 버전, 주요 라이브러리 분석
- 디렉토리 구조 생성: 프로젝트 구조 분석 및 HTML 템플릿 형식으로 생성
5.3 MyBatis 상세 분석
- 설정 파일 분석: mybatis-config.xml, sqlMapConfig.xml 파싱
- 버전 및 의존성 분석: MyBatis 버전, MyBatis-Spring 통합 방식 확인
- Mapper 스캔 설정: Mapper 인터페이스 및 XML 파일 매핑 분석
5.4 MyBatis Mapper 목록 추출 및 Oracle 패턴 분석
# 분석 대상: $SOURCE_SQL_MAPPER_FOLDER
- Mapper 파일 목록 생성: XML 파일 및 인터페이스 파일 목록 추출
- Oracle SQL 패턴 발견: Oracle 특화 함수, 문법, 데이터 타입 패턴 분석
- 복잡도 분석: 변환 난이도별 SQL 패턴 분류 및 샘플 추출
5.5 DataSource 설정 정보 추출
- 설정 파일 탐색: application.properties, context.xml 등에서 DataSource 설정 추출
- JNDI 매핑: DataSource와 Mapper 간의 연결 관계 분석
5.6 Java 소스 Oracle 의존성 분석
# 분석 대상: $JAVA_SOURCE_FOLDER
- Oracle JDBC 드라이버 사용: import oracle.* 패턴 검색
- Oracle 특화 데이터 타입: CLOB, BLOB, XMLType 등 사용 현황
- Oracle Sequences: 시퀀스 사용 패턴 분석
- Oracle 특화 기능: PL/SQL 호출, Oracle 함수 사용 등
결과 파일
분석 결과 파일 (7개)
# 출력 경로: $APPLICATION_FOLDER/discovery/
1. ApplicationOverview.md # 프로젝트 개요 및 기본 정보
2. TechnologyStack.md # 기술 스택 및 의존성 정보
3. DirectoryStructure.md # 프로젝트 디렉토리 구조
4. MyBatisConfiguration.md # MyBatis 설정 및 구성 정보
5. DataSourceConfiguration.md # DataSource 설정 정보
6. OracleJavaDependencies.md # Java 코드 내 Oracle 의존성
7. AnalysisSummary.md # 전체 분석 결과 요약
CSV 데이터 파일 (5개)
# 출력 경로: $APPLICATION_FOLDER/discovery/
1. MapperFileList.csv # Mapper 파일 목록 및 기본 정보
2. OracleSqlPatterns.csv # 발견된 Oracle SQL 패턴 목록
3. CriticalPatterns.csv # 고복잡도/중요 패턴 샘플
4. DataSourceMapping.csv # DataSource와 Mapper 매핑 정보
5. OracleJavaUsage.csv # Java 코드 내 Oracle 사용 현황
로그 파일
# 로그 경로: $APP_LOGS_FOLDER
환경 변수 의존성
- 필수 환경변수:
APPLICATION_NAME
,JAVA_SOURCE_FOLDER
,SOURCE_SQL_MAPPER_FOLDER
- 출력 환경변수:
APPLICATION_FOLDER
,APP_TOOLS_FOLDER
- 설정 환경변수:
TARGET_DBMS_TYPE
,TRANSFORM_JNDI
다음 단계
이 분석 단계는 후속 단계인 “1-2. 분석 보고서 작성 및 SQL변환 대상 추출”의 입력 데이터로 사용됩니다.