본문 바로가기
개발/egovframework

[전자정부프레임워크] Id Generation 시퀀스 관리

by 아크투어 2023. 5. 2.
반응형

전자정부프레임워크 Id Generation

 

1. 개요

  • Id Generation은 유일한 ID를 생성하기 위해 egovframework에서 제공하는 서비스이다.
  •  egovframework는 UUID, 시퀀스 기반 및 데이터베이스 생성 ID를 비롯한 여러 옵션을 지원한다.

 

전자정부프레임워크 서비스아키텍처
전자정부프레임워크 서비스아키텍처

2. 데이터베이스 테이블 구조

  • 테이블구조는 아래와같이 두개의 컬럼을 가진다.
  • table_name에는 사용하고자하는형식 / next_id는 자동증감숫자를 관리한다.
CREATE TABLE public.tb_com_seq (
	table_name varchar(30) NOT NULL,
	next_id numeric(30)    NULL,
	CONSTRAINT tb_com_seq_pk PRIMARY KEY (table_name)
);

 

 

3.고객관리 시퀀스 생성해보기

  • 경로는 resources>  egovframework > spring > com > idgn > 경로에 존재
  • blockSize: Id Generation 내부적으로 사용하는 정보로 ID 요청시마다 DB접속을 하지 않기 위한 정보
  • table: 생성하는 테이블 정보 (id gen을 관리하는 테이블명)
  • tableName: 사용하고자 하는 아이디 개별 인식을 위한 키 값 (예시. BBS_ID000000001, C00001 등)
# context-idgn-cust.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="custGnrService" class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" destroy-method="destroy">
        <property name="dataSource" ref="egov.dataSource" />
        <property name="strategy"   ref="custStrategy" />
        <property name="blockSize"  value="1"/>
        <property name="table"      value="tb_com_seq"/>
        <property name="tableName"  value="CUST_ID"/>
    </bean>
    <bean name="custStrategy" class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl">
        <property name="prefix"   value="C" />
        <property name="cipers"   value="6" />
        <property name="fillChar" value="0" />
    </bean> 

</beans>

 

 

 

 

4. class파일

  • context-idgn-cust.xml 파일의 bean name 값을 불러와서 의존성을 주입시킨다.
  • 주의할점을 실제 개발하고 구동시 한번 idgen이 실행되면 DB트랜잭션 오류가 발생해도 숫자는 증가한다.
@Resource(name = "custGnrService")
private EgovIdGnrService custGnrService;

String custCd = custGnrService.getNextStringId();

 

 

5. 타입별 형식

//int
service.getNextIntegerId()
//short
service.getNextShortId()
//byte
service.getNextByteId()
//long
service.getNextLongId()
//BigDecimal
service.getNextBigDecimalId()
//String
service.getNextStringId()

 

 

6. 마치며

  • 해당방법 외에도 UUID나 DB자체의 자동증감 기능을 사용해도 된다.
  • 개인적으로 숫자 자동증감이 아니라 특정형태의 문자열을 조합한 시퀀스가 필요하다면 전자정부 프레임워크의 idgen 기능을 추천한다.

id gen 생성
ig gen 생성

 

반응형