ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전자정부 표준프레임워크 시리즈 11화 – 공통 코드 관리 기능 완벽 정리: 코드 테이블, 조회 서비스, 화면 연동까지
    기술과 산업/언어 및 프레임워크 2025. 5. 28. 15:22
    728x90

    전자정부 표준프레임워크에서 공통 코드 시스템을 어떻게 구성하고 사용하는지에 대해 코드 테이블 설계, Service/DAO 구현, 화면 연동 방식까지 전 과정을 실무 중심으로 설명합니다.

    1. 왜 공통 코드 시스템이 중요한가?

    공공 정보 시스템에서 "공통 코드"란 다음을 의미합니다:

    • 선택 항목(콤보박스)의 값 목록
    • 상태값, 구분자, 유형 값 등 정형화된 분류
    • 다국어 연동 및 유지보수 시 공통 관리 대상

    예를 들어,

    • 성별 코드: M, F → ‘남성’, ‘여성’
    • 민원 유형 코드: A01, B02 → ‘주민등록’, ‘출입국’
    • 업무 상태 코드: 00, 01, 99 → ‘작성 중’, ‘제출’, ‘반려’

    이러한 값들을 하드코딩하지 않고 중앙 집중형 코드 테이블로 관리하는 것이
    전자정부 표준프레임워크의 기본 전략입니다.


    2. 전자정부 프레임워크의 코드 관리 기본 구조

    전자정부 프레임워크에서는 다음과 같은 구조로 공통 코드를 처리합니다:

    [DB] 코드 테이블 (COMTCCMMNDETAILCODE)
       ↓
    [DAO] → [Service] → [Controller]
       ↓
    [JSP 또는 JS]에서 공통 코드 조회 및 출력
    

    ✅ 공통 코드 기능은 eGovFrame 내에서 EgovCmmUseService로 제공됩니다.


    3. DB 테이블 구조

    전자정부 표준 DB 구조에서 다음 두 개의 테이블이 기본입니다.

    1) COMTCCMMNCODE (코드 분류 테이블)

    컬럼명 설명

    CODE_ID 코드 분류 ID (예: GENDER)
    CODE_ID_NM 코드 분류 이름 (예: 성별)
    USE_AT 사용 여부

    2) COMTCCMMNDETAILCODE (상세 코드 테이블)

    컬럼명 설명

    CODE_ID 상위 코드 ID (FK)
    CODE 상세 코드 값 (예: M, F)
    CODE_NM 코드 이름 (예: 남성, 여성)
    USE_AT 사용 여부
    SORT_ORDR 정렬 순서

    ✅ 이 구조는 공공기관 전반에 걸쳐 가장 보편적으로 사용되는 코드 시스템입니다.


    4. Service / DAO 구조

    전자정부 표준 샘플에는 다음과 같은 공통 코드 조회 서비스가 기본 탑재되어 있습니다.

    Interface

    public interface EgovCmmUseService {
        List<CmmnDetailCode> selectCmmCodeDetail(CmmnCodeVO vo) throws Exception;
    }
    

    사용 예

    CmmnCodeVO vo = new CmmnCodeVO();
    vo.setCodeId("GENDER");
    List<CmmnDetailCode> codeList = cmmUseService.selectCmmCodeDetail(vo);
    

    ✅ 이 구조를 그대로 사용하거나, 프로젝트 전용 코드 서비스로 커스터마이징 가능합니다.


    5. JSP 화면에서 코드 바인딩 방식

    전자정부 표준 방식은 JSP에서 코드 목록을 출력하는 패턴을 다음과 같이 사용합니다.

    <c:forEach var="code" items="${genderCodeList}">
        <option value="${code.code}">${code.codeNm}</option>
    </c:forEach>
    

    Controller 또는 Interceptor에서 미리 공통 코드를 Model에 담아두고
    화면에서는 반복 출력만 하도록 설계합니다.


    6. 고급 활용 전략 – 다국어, JS 연동, 비동기 처리

    A. 다국어 연동

    CODE_NM 컬럼에 다국어 처리를 적용하려면 별도 테이블 또는 다국어 맵핑 테이블 구축이 필요
    → 예: COMTCCMMNDETAILCODE_LANG (code_id, code, lang, code_nm)

    B. 자바스크립트로 코드 조회 (Ajax)

    화면 전환 없이 콤보박스를 변경할 때 서버에서 코드 목록을 비동기 조회
    → /cmm/codeAjax.do?codeId=CAR_TYPE

    서버 응답은 JSON 형태

    [
      {"code": "A01", "codeNm": "경형"},
      {"code": "B01", "codeNm": "중형"},
      {"code": "C01", "codeNm": "대형"}
    ]
    

    C. 코드 캐싱

    • 코드 조회는 자주 발생하는 요청이므로 SimpleCache, EhCache, Redis 등을 활용한 캐싱 전략 도입 가능
    • 코드 변경이 자주 발생하지 않기 때문에, 서버 시작 시 전량 로딩 방식도 실무에서 많이 활용

    7. 실무에서 자주 묻는 질문 (FAQ)

    Q1. 코드 값이 화면마다 다르게 사용되면 어떻게 해야 하나요?

    A: 분류 ID를 달리하거나, 한 분류 내에서도 USE_AT, SORT_ORDR, 업무ID 기준으로 분기하여 조회

    Q2. 코드 조회를 모든 Controller에서 공통 적용하고 싶은데?

    A: @ControllerAdvice 또는 Interceptor에서 미리 Model에 코드를 주입


    결론 – 공통 코드 구조는 시스템의 유연성과 유지보수성을 결정짓는 핵심

    전자정부 표준프레임워크는 공통 코드 시스템을 통해
    코드 일관성 확보, 다국어 처리 기반 구축, 감리 대응 문서화까지 가능하도록 설계되어 있습니다.

    이 구조를 잘 활용하면

    • 신규 업무 추가 시 빠른 적용
    • UI 일관성 유지
    • 사용자 혼란 최소화

    라는 실무적 장점을 모두 누릴 수 있습니다.


    다음 화 예고

    👉 전자정부 표준프레임워크 시리즈 12화 – 배치 모듈의 구조와 활용 전략: Quartz 기반 스케줄링 시스템 이해하기

     

    728x90
Designed by Tistory.