[JAVA,ORACLE] 시퀀스를 이용한 고유키 생성

안녕하세요 게으른 개발잡니다.

외주 진행중 아이디가 이메일이라 보여주기식 고유키값을 만들어서 회원들에게 나눠줄 일이 있어 정보남깁니다.

형식을 영문대문자 + 숫자5자리(ex A10000)로 요청을 하셔서 편하게 시퀀스 생성후 ASCII코드를 이용해 작업했습니다.

아래 코드 보시죠.

Oracle sequence 생성

1
CREATE SEQUENCE  "시퀀스명"  MINVALUE 0 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 6510000 NOCACHE  NOORDER  NOCYCLE ;
cs

보시다시피 ASCII코드의 대문자 A인 65로 시작하는걸 보실수있습니다.

Java Method 생성

1
2
3
4
5
6
7
8
9
10
public static String createSequenceKey(int strNum) {
        String r = "";
        r=Integer.toString(strNum);
        int header = Integer.valueOf(r.substring(0,2));
        char result = (char) header;
        
        r = result + r.substring(2);
        
        return r;
    }
cs

입력받은 strNum의 앞 2자리를 잘라서 char로 캐스팅 후 숫자와 다시 합쳐서 return해주는 메소드입니다.

 

해당하는 메소드를 호출하면서 db에서 sequence의 nextval을 불러오시면 신경쓰지않고 편하게 둘 수 있는 고유 키가 완성이 됩니다 ㅎㅎ

만약 AA10000같은 고유키를 만드셔야 한다면, 656510000의 시퀀스를 만드신 후, nextval을 한번 더 체크해서 91(ex;659110000)번이 되었을 경우 sequence alter를 이용해 666510000같은 형태로 변환하여 사용하시면 됩니다.

 

궁금하신건 댓글 부탁드립니다. 태클 환영합니다.

반응형