반응형
전자정부프레임워크 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 기능을 추천한다.
반응형
'개발 > egovframework' 카테고리의 다른 글
[전자정부프레임워크] DB접속정보 암호화 - crypto 서비스 (1) | 2023.05.03 |
---|---|
[전자정부프레임워크] 스프링시큐리티 로그인 적용(2/2) (0) | 2023.03.31 |
[전자정부프레임워크] 스프링시큐리티 로그인 적용(1/2) (0) | 2023.03.30 |
[전자정부프레임워크] Spring quartz 스케줄러 사용법 (0) | 2023.03.30 |
[전자정부프레임워크] Spring profile (운영,개발 분리) (0) | 2023.03.22 |