Java で GUID を作成する

Rashmi Patidar 2023年10月12日
  1. GUID とは
  2. randomUUID() メソッドを使用して UUID を生成するサンプルコード
  3. UUID コンストラクターおよび fromString() メソッドを使用して UUID を生成するサンプルコード:
Java で GUID を作成する

GUID とは

GUID は、Globally Unique Identifier の頭字語です。これは、Universally Unique Identifiers または UUIDs とも呼ばれます。2つの用語の間に真の違いはありません。技術的には、これらは 128 ビットの不変で、一意で、暗号的に強力な乱数です。これらの乱数は、最終的には計算目的で使用されます。このような数値を生成するアルゴリズムは非常に複雑であるため、1 秒あたり 1,0000,000,000 の乱数を生成する可能性があります。これらの数字が繰り返される可能性は低いです。

ソフトウェア開発の実践と方法論では GUID または UUID を使用します。この場合、データベースキー、コンポーネント ID、およびさまざまなトランザクションであるプライマリキーとして一意の ID を使用して巨大なトランザクションを発生させます。

randomUUID() メソッドを使用して UUID を生成するサンプルコード

package guid;

import java.util.UUID;

public class CreateGuid {
  public static void main(String[] args) {
    UUID uuid = UUID.randomUUID();
    System.out.println("UUID = " + uuid.toString());
  }
}

Java 言語では、UUID クラスはバージョン 1.5 以降で使用できます。このクラスは、java.util.UUID パッケージに含まれています。randomUUID() メソッドは、タイプ 4(疑似ランダムに生成された)UUID を取得するための静的ファクトリメソッドです。メソッドは UUID クラスの静的ファクトリメソッドであるため、メソッドを呼び出すにはクラス名が必要です。

上記のプログラムからの出力は、一意に生成された UUID のようです。

UUID = 70aba303-60d8-4cb5-b3e7-4170c4be5642

UUID コンストラクターおよび fromString() メソッドを使用して UUID を生成するサンプルコード:

以下のプログラムでは、UUID クラスコンストラクターを使用して UUID を生成します。コンストラクターは、mostSignificantBitsleastSignificantBits の 2つのパラメーターを取ります。

mostSignificantBits は UUID の最上位 64 ビット用であり、leastSignificantBits は最下位 64 ビット用です。

fromString() メソッドは、文字列の標準表現から UUID を作成する静的ファクトリメソッドです。上記のメソッドは、パラメータとして文字列を取ります。したがって、uuid オブジェクトでは、インライン関数で toString() メソッドが呼び出されます。

名前が toString メソッドで説明されている文字列表現に準拠していない場合、fromString メソッドは IllegalArgumentException をスローします。

package guid;

import java.util.UUID;

public class GenerateGuidUsingConstructor {
  public static void main(String[] args) {
    UUID uuid = new UUID(24, 02);
    System.out.println(UUID.fromString(uuid.toString()));
  }
}

以下は、コンストラクターから生成された UUID の出力です。

00000000-0000-0018-0000-000000000002
著者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn