How to Generate a UUID in Java
Basic Usage of java.util.UUID
Java has provided the built-in java.util.UUID class since version 1.5, requiring no additional dependencies. UUID.randomUUID() generates UUID v4 (random) and is the most commonly used method. The UUID class also provides methods for parsing, comparing, and formatting UUIDs. UUID objects are immutable and thread-safe, safe to use in concurrent environments.
import java.util.UUID;
public class UUIDExample {
public static void main(String[] args) {
// ็ๆ UUID v4
UUID uuid = UUID.randomUUID();
System.out.println(uuid); // ๆ ๅๆ ผๅผ
System.out.println(uuid.toString()); // ๅไธ
System.out.println(uuid.toString().toUpperCase()); // ๅคงๅ
System.out.println(uuid.toString().replace("-", "")); // ๆ ่ฟๅญ็ฌฆ
// ่ทๅ UUID ๅญๆฎต
System.out.println(uuid.version()); // 4
System.out.println(uuid.variant()); // 2 (IETF)
System.out.println(uuid.getMostSignificantBits());
System.out.println(uuid.getLeastSignificantBits());
// ่งฃๆ UUID ๅญ็ฌฆไธฒ
UUID parsed = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
System.out.println(parsed.version()); // 4
// ไปๅญ่ๆฐ็ปๅๅปบ
byte[] bytes = new byte[16]; // ้่ฆๅกซๅ
UUID fromBytes = new UUID(
java.nio.ByteBuffer.wrap(bytes, 0, 8).getLong(),
java.nio.ByteBuffer.wrap(bytes, 8, 8).getLong()
);
}
}
Using UUID Primary Keys in Spring Boot
// Spring Boot + JPA ๅฎไฝ็คบไพ
import jakarta.persistence.*;
import java.util.UUID;
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(columnDefinition = "uuid", updatable = false)
private UUID id;
// ๆ่
ๆๅจๆๅฎ็ๆๆนๅผ
@Id
@Column(nullable = false, updatable = false)
private UUID id = UUID.randomUUID();
private String customerName;
private double amount;
// ไฝฟ็จ @GenericGenerator (Hibernate)
// @GeneratedValue(generator = "uuid2")
// @GenericGenerator(name = "uuid2", strategy = "uuid2")
// private String id;
}
UUID as REST API Path Parameter
// Spring MVC Controller ็คบไพ
import org.springframework.web.bind.annotation.*;
import java.util.UUID;
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity getUser(@PathVariable UUID id) {
// Spring ่ชๅจๅฐ่ทฏๅพๅๆฐๅญ็ฌฆไธฒ่ฝฌๆขไธบ UUID ๅฏน่ฑก
// ๅฆๆๆ ผๅผไธๅๆณ๏ผ่ชๅจ่ฟๅ 400 Bad Request
return userService.findById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@PostMapping
public ResponseEntity createUser(@RequestBody CreateUserRequest request) {
UUID newId = UUID.randomUUID();
User user = userService.create(newId, request);
URI location = URI.create("/api/users/" + newId);
return ResponseEntity.created(location).body(user);
}
}
UUID String Validation
import java.util.UUID;
import java.util.regex.Pattern;
public class UUIDValidator {
private static final Pattern UUID_PATTERN = Pattern.compile(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-7][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
);
// ๆนๆณ1๏ผไฝฟ็จๆญฃๅ่กจ่พพๅผ๏ผไธฅๆ ผๆ ผๅผๆฃๆฅ๏ผ
public static boolean isValidUUID(String str) {
return str != null && UUID_PATTERN.matcher(str).matches();
}
// ๆนๆณ2๏ผไฝฟ็จ UUID.fromString๏ผไผๆฅๅไธไบ้ๆ ๅๆ ผๅผ๏ผ
public static boolean isValidUUIDLoose(String str) {
try {
UUID.fromString(str);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
}
Efficient Batch UUID Generation
import java.util.UUID;
import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class BatchUUIDGenerator {
// ็ๆๆๅฎๆฐ้็ UUID ๅ่กจ
public static List generate(int count) {
return IntStream.range(0, count)
.mapToObj(i -> UUID.randomUUID().toString())
.collect(Collectors.toList());
}
// ็ๆๆ ่ฟๅญ็ฌฆๆ ผๅผ
public static List generateCompact(int count) {
return IntStream.range(0, count)
.mapToObj(i -> UUID.randomUUID().toString().replace("-", ""))
.collect(Collectors.toList());
}
public static void main(String[] args) {
List uuids = generate(1000);
System.out.println("Generated: " + uuids.size() + " UUIDs");
System.out.println("First: " + uuids.get(0));
}
}
Using UUID in Kotlin
// Kotlin ็คบไพ๏ผไฝฟ็จ Java UUID ็ฑป๏ผ
import java.util.UUID
// ๅบๆฌ็จๆณ
val id: UUID = UUID.randomUUID()
val idStr: String = id.toString()
// ๆฉๅฑๅฝๆฐ่ฎฉไปฃ็ ๆด็ฎๆด
fun String.toUUID(): UUID = UUID.fromString(this)
fun String.toUUIDOrNull(): UUID? = try { UUID.fromString(this) } catch (e: IllegalArgumentException) { null }
// ไฝฟ็จ
val uuid = "550e8400-e29b-41d4-a716-446655440000".toUUID()
val maybeUuid = "invalid".toUUIDOrNull() // null
// data class ไธญไฝฟ็จ
data class Product(
val id: UUID = UUID.randomUUID(),
val name: String,
val price: Double
)
Try the free tool now
Use Free Tool โ