eGovFramework 공통컴포넌트 테이블 사용

eGovFramework 공통컴포넌트 테이블

공통코드, 파일, 메뉴, 권한, 롤, 회원(사용자), 최근 검색어, 로그, 게시글, 게시글 통계, 템플릿 등 공통 테이블을 제공합니다.

테이블 생성 스크립트

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:init_table
공통 컴포넌트 테이블과 초기 데이터는 eGov에서 제공하는 스크립트로 DB에 생성할 수 있습니다.
Row가 없는 테이블도 eGov 프로젝트 톰캣 실행 시 사용되니 삭제하면 안 됩니다.


메뉴 접근 권한 추가 방법

아래와 같이, 쿼리로 권한 생성 및 매핑하면 스프링에서 자동으로 권한에 맞는 메뉴만 보여줍니다.
Interceptor 등에 권한별 분기처리가 있는 경우, 추가가 필요할 수 있습니다.

유저 권한 생성 쿼리

INSERT INTO comtnauthorinfo (
	AUTHOR_CODE,
	AUTHOR_NM,
	AUTHOR_DC,
	AUTHOR_CREAT_DE)
VALUES('ROLE_ADMIN_SALESMAN',
	'관리자 영업 담당자',
	'',
	'2023-07-30 13:11:25'
);

관리자 영업 담당자 권한 ‘ROLE_ADMIN_SALESMAN’ 생성 쿼리 예시입니다.

유저 권한-메뉴 매핑 생성

INSERT INTO comtnmenucreatdtls
SELECT
	MENU_NO,
	'ROLE_ADMIN_SALESMAN',
	null
FROM comtnmenucreatdtls
WHERE MENU_NO IN (
	7300,
	7304, 7305, 7306, 7307,
	8100,
	8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108
);

기존 ROLE_ADMIN 권한에 매핑된 14개 메뉴를 ‘ROLE_ADMIN_SALESMAN’ 권한에 매핑합니다.

유저 권한 설정

INSERT INTO comtnemplyrscrtyestbs (
	SCRTY_DTRMN_TRGET_ID,
	MBER_TY_CODE,
	AUTHOR_CODE)
VALUES('USRCNFRM_00000002223',
'USR03',
'ROLE_ADMIN_SALESMAN');

영업 유저 KEY를 기준으로 ‘ROLE_ADMIN_SALESMAN’ 권한을 부여합니다.

유저 권한-롤 매핑 생성

INSERT INTO comtnauthorrolerelate
SELECT 
	'ROLE_ADMIN_SALESMAN',
	ROLE_CODE,
	NOW()
FROM comtnauthorrolerelate
WHERE AUTHOR_CODE = 'ROLE_ADMIN'

‘ROLE_ADMIN_SALESMAN’ 권한에 ROLE_ADMIN과 동일한 web-000003 (모든 자원에 대한 접근 제한) 롤을 부여합니다.


eGov 채번 관리 테이블 사용법

채번 서비스 정의 bean xml 생성

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

    <bean name="테이블명GnrService" class="org.egovframe.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" destroy-method="destroy">
        <property name="dataSource" ref="egov.dataSource" />
        <property name="strategy"   ref="테이블명Strategy" />
        <property name="blockSize"  value="10"/>
        <property name="table"      value="COMTECOPSEQ"/>
        <property name="tableName"  value="테이블명"/>
    </bean>
    <bean name="테이블명Strategy" class="org.egovframe.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl">
        <property name="prefix"   value="프리픽스명" />
        <property name="cipers"   value="자릿수" />
        <property name="fillChar" value="0" />
    </bean>
	
</beans>

src/main/resources/egovframework/spring/com/idgn/context-idgn-테이블약어.xml 파일 예시입니다.
blockSize가 10이면 10개의 채번을 DB에서 가져오고, 메모리에서 관리하여 DB 접근을 최소화 합니다.
공통 컴포넌트 테이블 COMTECOPSEQ에서 tableName 별 채번 Count를 순차적으로 관리합니다.

채번 사용 Java 코드 예시

// 의존성 주입 코드
@Resource(name = "테이블명GnrService")
private EgovIdGnrService idgenService;

// Insert 코드
String key = idgenService.getNextStringId();
vo.setKey변수명(key);

테이블약어Mapper.insert테이블약어(vo);

이중화 서버에서는 DB Sequence (AutoIncrement) 또는 UUID를 사용하여 더 안정적으로 Key 중복을 방지하는 것이 좋습니다.

Leave a comment