Java/기본

[java] UUID란 무엇인가? 활용하기

vmpo 2021. 10. 4. 20:00

java에서 간단하게 식별자를 생성할 수 있는 UUID에 대해서 확인해보겠습니다.

 

UUID란?


출처 : 위키백과

네트워크 상에서 서로 모르는 개체들을 식별하고 구별하기 위해서는 각각의 고유한 이름이 필요하다. 이 이름은 고유성(유일성)이 매우 중요하다. 같은 이름을 갖는 개체가 존재한다면 구별이 불가능해 지기 때문이다. 고유성을 완벽하게 보장하려면 중앙관리시스템이 있어서 일련번호를 부여해 주면 간단하지만 동시다발적이고 독립적으로 개발되고 있는 시스템들의 경우 중앙관리시스템은 불가능하다. 개발주체가 스스로 이름을 짓도록 하되 고유성을 충족할 수 있는 방법이 필요하다. 이를 위하여 탄생한 것이 범용고유식별자(UUID)이며 국제기구에서 표준으로 정하고 있다.

UUID 표준에 따라 이름을 부여하면 고유성을 완벽하게 보장할 수는 없지만 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.

 

[요약]

#어느 시스템에나 적용할 수 있는 구분값

#중복될 가능성이 0은 아니지면 거의 0에 가까움.

 

 

정의


UUID는 16 옥텟 (128비트)의 수이다. 표준형식에서 UUID는 32개의 16진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분

ex) 550e8400-e29b-41d4-a716-446655440000

 

 

Java에서 UUID 생성하기


java 내장클래스인 UUID 클래스를 활용하면 쉽게 사용가능하다.

static 메소드로 randomUUID()를 호출하면 자동으로 랜덤한 값의 UUID를 생성해준다.

 

package com.oogo.uuid;

import java.util.UUID;

public class UudiTeser {

  public static void main(String[] args) {
    UUID first = UUID.randomUUID();
    UUID second = UUID.randomUUID();

    System.out.println("UUID first: " + first.toString());
    System.out.println("UUID second: " + second.toString());
  }
}

#출력결과

UUID first: fa857de4-fedb-4651-b895-8e7efc18342c
UUID second: 1668d9dc-3134-4f85-86c4-5b4d6651fa25

 

db scheme에 상관없이 uuid를 key값으로 저장하면 db마이그레이션시에도 큰 이슈는 없을 것으로 보인다.

다만, 중복이 발생할 가능성이 있으니 저장시의 예외처리는 필요할듯. 아니면 고유성이 완벽히 보장되어야 하는 로직에는 사용하지 않는 것이 날듯하다. 

 

컨텐츠 정보가 어쩔수없이 url에 노출될때 알기쉬운 패턴의 key값을 활용하기 싫을때에도 활용 가능 할 수 있을 것 같다.

LIST