Java: Eine einmalige, eindeutige und zufällige Identifikationsnummer generieren (ID oder UUID)

Man brauch es bei der Interaktion mit der Datenbank. Man brauch es zur Programmierung eines Poolings und man brauch es an 1.000.000 anderen Stellen im Leben. Die Rede ist natürlich von ID’s. Die Abkürzung ID kommt aus dem Englischen und steht für “Identity Document”. Speziell geht es in diesem Beitrag um die so genannte Universally Unique Identifier kurz UUID. Die UUID ist ein Standard für Identifikatoren, der in der Softwareentwicklung verwendet wird. Er ist von der Open Software Foundation (OSF) als Teil des Distributed Computing Environment (DCE) standardisiert. Hauptsächlich werden UUIDs eingesetzt, um Informationen in verteilten Systemen ohne zentrale Koordination eindeutig kennzeichnen zu können.

 

Was ist eine UUID?

Eine UUID ist eine Zahl, die aus 16 Bytes besteht. Typischerweise wird die UUID hexadezimal dargestellt und in fünf Gruppen unterteilt.
Beispiele:

  • ebc1822f-268e-4bdb-97b0-af1b270a12a9
  • 57b3289e-335f-3487-bc49-4ace2714aa91
  • f4a49c9d-ba04-4962-a876-059bee6badec

 

Versionen der UUID

Version Beschreibung
1 ursprüngliche, zeitstempelbasierte UUID
2 DCE Security version
3 namensbasiert, MD5-gehasht
4 zufällig oder pseudozufällige UUID
5 namensbasiert, SHA1-gehasht

mehr Informationen gibt es auf Wikipedia.

Anwendungsgebiete von UUID’s

Eine UUID kann man immer gebrauchen. In den folgenden Szenarien habe ich schon einmal eine UUID eingesetzt.

 

per Java eine UUID erzeugen

// Eine Typ 4 UUID erzeugen (zufällige UUID)
UUID myID = UUID.randomUUID();

// Eine Typ 3 UUID erzeugen (aus einem Byte Array)
UUID myID2 = UUID.nameUUIDFromBytes(("AxxG Blog").getBytes());

// wichtige Werte
System.out.println("UUID: " + myID);
System.out.println("Die kleinsten 64 von 128 Bit: " + myID.getLeastSignificantBits());
System.out.println("Die größten 64 von 128 Bit: " + myID.getMostSignificantBits());
System.out.println("Hashcode: " + myID.hashCode());

System.out.println("UUID: " + myID2);
System.out.println("Die kleinsten 64 von 128 Bit: " + myID2.getLeastSignificantBits());
System.out.println("Die größten 64 von 128 Bit: " + myID2.getMostSignificantBits());
System.out.println("Hashcode: " + myID2.hashCode());

 

Die Ausgabe

UUID: f4a49c9d-ba04-4962-a876-059bee6badec
Die kleinsten 64 von 128 Bit: -6307848060807696916
Die größten 64 von 128 Bit: -818357031029946014
Hashcode: 146636168
UUID: 57b3289e-335f-3487-bc49-4ace2714aa91
Die kleinsten 64 von 128 Bit: -4879286471999837551
Die größten 64 von 128 Bit: 6319439362062759047
Hashcode: -5112762

 

JAVA API

Achtung erst seit JDK 1.5 gibt es die UUID.
http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html

 

Quellen

  • Bild by Thorben Wengert / pixelio.de
  • http://de.wikipedia.org/wiki/Identit%C3%A4t
  • http://de.wikipedia.org/wiki/Identifizierung
  • http://de.wikipedia.org/wiki/Universally_Unique_Identifier



Kommentar verfassen