본문 바로가기
Development/Java

java UUID (Universally Unique Identifier) 랜덤 생성 방법 (범용 고유 식별자)

by 버들도령 2023. 10. 21.
728x90

How to Generate a UUID in Java

Java UUID ( Universally Unique Identifier )
범용 고유 식별자

UUID는 Universally Unique Identifier의 약자로, 범용 고유 식별자를 의미합니다.
UUID는 128비트의 고유 식별자이며, 네트워크 프로토콜, 데이터베이스, 파일 시스템 등 다양한 용도로 사용될 수 있습니다.

UUID는 다음과 같은 특징을 가지고 있습니다.

  • 고유성: UUID는 서로 다른 값을 가지는 확률이 매우 낮습니다.
  • 무작위성: UUID는 랜덤한 값을 생성할 수 있습니다.
  • 국제화: UUID는 언어와 문화권에 관계없이 사용할 수 있습니다.

UUID 클래스는 다음과 같은 두 가지 방법으로 UUID를 생성할 수 있습니다.

  • 랜덤 UUID 생성: randomUUID() 메서드를 사용하여 랜덤한 UUID를 생성할 수 있습니다.
  • 네임스페이스를 지정하여 UUID 생성: nameUUIDFromBytes() 메서드를 사용하여 네임스페이스를 지정하여 UUID를 생성할 수 있습니다.

UUID 클래스는 다음과 같은 메서드를 제공합니다.

  • version(): UUID의 버전을 반환합니다.
  • variant(): UUID의 변형을 반환합니다.
  • toString(): UUID를 문자열로 표현합니다.
  • equals(): UUID를 비교합니다.
  • hashCode(): UUID의 해시 코드를 계산합니다.

다음은 UUID 클래스를 사용하여 생성된 UUID의 예입니다.

123e4567-e89b-12d3-a456-426655440000

이 UUID는 랜덤 UUID이며, version=4와 variant=1을 가지고 있습니다.

UUID 클래스는 다양한 용도로 사용할 수 있는 유용한 클래스입니다. 파일이나 레코드의 고유 식별자 생성, 쿠키나 세션 ID 생성, 랜덤 값 생성 등 다양한 용도로 사용할 수 있습니다.

 

 

import java.util.UUID;

public class UUIDExample {

    public static void main(String[] args) {
        // 1. 랜덤 UUID 생성
        UUID uuid1 = UUID.randomUUID();
        System.out.println(uuid1);

        // 2. 네임스페이스를 지정하여 UUID 생성
        UUID uuid2 = UUID.nameUUIDFromBytes("my_name".getBytes());
        System.out.println(uuid2);

        // 3. 지정된 버전의 UUID 생성
        UUID uuid3 = UUID.fromString("urn:uuid:b7716880-664f-473c-a79e-a4185932c4c0");
        System.out.println(uuid3);
    }
}

이 소스는 다음과 같은 결과를 출력합니다.

123e4567-e89b-12d3-a456-426655440000
b7716880-664f-473c-a79e-a4185932c4c0

 

UUID의 유효성 체크
import java.util.regex.Pattern;

public class UUIDValidator {

    private static final Pattern UUID_PATTERN = Pattern.compile(
        "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$");

    public static boolean isValid(String uuid) {
        return UUID_PATTERN.matcher(uuid).matches();
    }

    public static void main(String[] args) {
        String uuid = "123e4567-e89b-12d3-a456-426655440000";
        System.out.println(isValid(uuid)); // true

        uuid = "invalid-uuid";
        System.out.println(isValid(uuid)); // false
    }
}

이 소스는 다음과 같은 결과를 출력합니다.

true
false

UUID_PATTERN 상수는 UUID의 정규 표현식입니다. 이 정규 표현식은 UUID의 128비트 값을 다음과 같이 8개의 16진수로 나누어 표현합니다.

[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}

isValid() 메서드는 UUID_PATTERN을 사용하여 주어진 UUID가 유효한지 여부를 검사합니다.

UUID의 유효성 검사를 위한 다른 방법은 다음과 같습니다.

  • UUID.isValid() 메서드를 사용합니다. 이 메서드는 주어진 UUID가 유효한지 여부를 검사하여 true 또는 false를 반환합니다.
  • UUID.fromString() 메서드를 사용하여 UUID를 문자열에서 생성합니다. 이 메서드는 주어진 문자열이 유효한 UUID가 아닌 경우 null을 반환합니다.

 

import java.util.UUID;

public class UUIDExample {

    public static void main(String[] args) {
        // UUID의 버전 및 변형 확인
        UUID uuid = UUID.randomUUID();
        System.out.println("버전: " + uuid.version());
        System.out.println("변형: " + uuid.variant());
    }
}

## 응답값
# 버전: 4
# 변형: 1

getLeastSignificantBits 메소드는 UUID의 최하위 64비트를 반환합니다.
getLeastSignificantBits 메소드를 사용하여 UUID의 최하위 64비트를 다른 형식으로 변환하는 예제입니다.

import java.util.UUID;

public class UUIDExample {

    public static void main(String[] args) {
        // UUID 생성
        UUID uuid = UUID.randomUUID();
        System.out.println("랜덤 UUID: " + uuid);

        // 최하위 64비트
        long leastSignificantBits = uuid.getLeastSignificantBits();
        System.out.println("leastSignificantBits : " + leastSignificantBits);

        // 최하위 64비트의 16진수 표현
        String hex = Long.toHexString(leastSignificantBits);
        System.out.println("hex : " + hex);

        // 최하위 64비트의 2진수 표현
        String binary = Long.toBinaryString(leastSignificantBits);
        System.out.println("binary : " + binary);
    }
}

---------- java Run ----------
랜덤 UUID: b2878073-2272-4df9-9364-5b732be8d1a8
leastSignificantBits : -7826029702247034456
hex : 93645b732be8d1a8
binary : 1001001101100100010110110111001100101011111010001101000110101000

Output completed (0 sec consumed)

 

UUID 클래스

UUID 클래스는 다음과 같은 메서드를 제공합니다.

  • randomUUID(): 랜덤 UUID를 생성. UUID는 암호학적으로 강한 의사(擬似) 난수 생성기를 사용하여 생성됩니다.
  • nameUUIDFromBytes(): 네임스페이스를 지정하여 UUID를 생성합니다.
  • fromString(): 지정된 문자열에서 UUID를 생성합니다.
  • getLeastSignificantBits() : UUID의 최하위 64비트를 반환합니다.
  • getMostSignificantBits() : UUID의 최상위 64비트를 반환합니다.
  • version(): UUID의 버전을 반환합니다.
  • variant(): UUID의 변형을 반환합니다.
  • toString(): UUID를 문자열로 반환합니다.
  • equals(): UUID를 지정된 객체와 비교합니다.
  • hashCode(): UUID의 해시 코드를 반환합니다.

UUID 클래스의 자세한 사용 방법은 JavaDoc: https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html을 참조하세요.

728x90

댓글