Complete reference for generating, validating, and formatting UUIDs using Java’s built-in java.util.UUID class — covers randomUUID, nameUUIDFromBytes, and Hibernate/Spring Boot integration.
Quick Start
Generate a Random UUID (v4) in Java
Java has included UUID support in the standard library since Java 5 via java.util.UUID — no external dependency needed:
UUID.randomUUID() uses SecureRandom internally, which is safe to call concurrently from multiple threads without synchronization. It generates a version 4 UUID every time.
All Versions
UUID Versions Available in Java
Version
Java Method
Use Case
v3 (MD5 name-based)
UUID.nameUUIDFromBytes(bytes)
Deterministic UUID from a byte array. Only MD5-based version built into Java.
v4 (Random)
UUID.randomUUID()
General purpose. Default choice for most applications.
v1, v5, v6, v7
Not in standard library
Use the java-uuid-generator (JUG) library — see below.
Java — Deterministic UUID (v3, built-in)
import java.util.UUID;
import java.nio.charset.StandardCharsets;
// Same input ALWAYS produces the same UUID
UUID id = UUID.nameUUIDFromBytes(“example.com”.getBytes(StandardCharsets.UTF_8));
System.out.println(id);
UUID v7
UUID v7 in Java (2026 Recommended for DB Keys)
Java’s standard library does not yet support v1, v5, or v7. For UUID v7 — recommended for database primary keys — use the java-uuid-generator (JUG) library:
import com.fasterxml.uuid.Generators;
import java.util.UUID;
UUID id = Generators.timeBasedEpochGenerator().generate();
// time-ordered UUID v7, ideal for DB primary keys
⚠️
Hibernate 6.4+ supports UUID v7 natively
If you use Hibernate ORM 6.4 or later, the @UuidGenerator(style = Style.TIME) annotation generates v7-style time-ordered UUIDs without any extra dependency.
Validation
Validate a UUID String in Java
Wrap UUID.fromString() in a try/catch to check validity:
import jakarta.persistence.*;
import org.hibernate.annotations.UuidGenerator;
import java.util.UUID;
@Entity
public class Order {
@Id
@UuidGenerator
private UUID id;
}
Spring Boot REST controller
@GetMapping(“/orders/{id}”)
public Order getOrder(@PathVariable UUID id) {
return orderRepository.findById(id)
.orElseThrow(() -> new NotFoundException());
}
FAQ
Java UUID FAQ
Java has included java.util.UUID in the standard library since Java 5. Just call UUID.randomUUID() to get a random UUID v4 — no Maven or Gradle dependency required. It works in any standard JDK installation.
Yes. UUID.randomUUID() uses a shared SecureRandom instance internally and is safe to call from multiple threads concurrently without external synchronization. Each call produces an independent, cryptographically random UUID v4.
Java’s standard library does not include UUID v7 natively. Use the java-uuid-generator (JUG) library via Maven/Gradle, calling Generators.timeBasedEpochGenerator().generate(). Alternatively, Hibernate ORM 6.4+ supports time-ordered UUID generation natively through the @UuidGenerator(style = Style.TIME) annotation.
UUID.nameUUIDFromBytes(byte[]) generates a deterministic UUID v3 (MD5-based) from a byte array input. The same input bytes always produce the same UUID, making it useful for deduplication or generating stable IDs from known data such as file hashes or URLs. It is the only name-based UUID version built into Java’s standard library.