티스토리 뷰
반응형
UUID(Universally unique identifier): 범용 고유 식별자
UUID는 테이블에서 key로 사용될 수 있는 대표적인 KeyGen의 방법 중 하나입니다.
UUID는 Java에서 제공해주는 기본적인 클래스로 사용할 수 있습니다.
import java.util.UUID;
UUID의 특징
1. 중복이 날 확률이 거의 없다(있다고는 하나 1초에 2.71 * 10^18 개의 UUID를 생성했을 때 최소 1개가 중복(충돌) 될 확률이 약 50% 정도라고 합니다.
참고: gafani.tistory.com/entry/MariaDBmysql-UUID-%EB%A1%9C-PK-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
2. 생김새와 사용법은 아래와 같이 생겼습니다.
String uuid = UUID.randomUUID().toString(); // 19c24da2-4708-42fa-8613-d9985faa6948
3. 마이크로소프트의 GUID와 같은 의미로 사용한다고 합니다.
4. 이전에는 Integer Type의 sequence의 값도 많이 사용하였으나 유추하기가 쉬워 UUID를 대체로 사용한다고 합니다.
이렇게 사용하였을 때 자리수가 꽤나 길어서 사용하기 애매한 부분도 생길 수 있습니다.
이를 방지하기 위해 아래와 같이 유틸 클래스를 만들어 보았습니다.
public class UUIDGenerateUtils {
private final static int LENGTH_20_LONG_RADIX = 9;
private final static int LENGTH_10_INT_RADIX = 9;
// 10자리의 UUID 생성
public static String makeShortUUID() {
UUID uuid = UUID.randomUUID();
return parseToShortUUID(uuid.toString());
}
public static String parseToIntRadixUUID(String uuid, int radix) {
int l = ByteBuffer.wrap(uuid.getBytes()).getInt();
return Integer.toString(l, radix);
}
public static String parseToLongRadixUUID(String uuid, int radix) {
long l = ByteBuffer.wrap(uuid.getBytes()).getLong();
return Long.toString(l, radix);
}
// 파라미터로 받은 값을 10자리의 UUID로 변환
public static String parseToShortUUID(String uuid) {
int l = ByteBuffer.wrap(uuid.getBytes()).getInt();
return Integer.toString(l, LENGTH_10_INT_RADIX);
}
// 파라미터로 받은 값을 20자리의 UUID로 변환
public static String parseToLongUUID(String uuid) {
long l = ByteBuffer.wrap(uuid.getBytes()).getLong();
return Long.toString(l, LENGTH_20_LONG_RADIX);
}
}
반응형
'Server' 카테고리의 다른 글
[Spring] Swagger를 통한 깔끔한 웹뷰 API 명세서 만들기 (0) | 2021.01.20 |
---|---|
MySQL Provider 에서 사용하는 유틸 만들기 (0) | 2021.01.19 |
[Java] Zip 파일로 다운로드 만들어보기 (0) | 2021.01.18 |
Command Line에서 BootRun 실행하기 (0) | 2021.01.04 |
[Spring] RabbitMQ 메시징 사용하기 (0) | 2020.12.14 |
[Spring] ControllerAdvice AOP 어노테이션과 사용법 (0) | 2020.12.14 |
댓글
공지사항